Files
firestorm/Gameleap/code/mw4/Code/MW4/CRIO.H
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

131 lines
2.8 KiB
C++

#ifndef __RIO_H__
#define __RIO_H__
#define MSBON(B) {B |= 0x80;}
#define MSBOFF(B) {B &= ~0x80;}
#define MAXLENGTH 13
#define ACK_CHAR 0xFC
#define NAK_CHAR 0xFD
#define RESTART_CHAR 0xFE
#define IDLE_CHAR 0xFF
#define RX_ACK_BIT 0x0001
#define RX_NAK_BIT 0x0002
#if !defined(TEST_RIO)
class CString
{
public:
char m_sz[256];
public:
CString()
{
m_sz[0] = '0';
};
~CString()
{
}
void _cdecl Format(const char* pcszFormat, ...)
{
va_list va_marker;
va_start(va_marker, pcszFormat);
vsprintf(m_sz, pcszFormat, va_marker);
va_end(va_marker);
}
operator const char* () const { return &m_sz[0]; }
CString& operator = (const char* pcszText)
{
strcpy(m_sz, pcszText);
return *this;
}
};
class CListBox
{
public:
public:
CListBox() {}
~CListBox() {}
int GetCount() const { return 0; }
void AddString(const char* pcszText) {}
void DeleteString(int nindex) {}
};
#endif // !defined(TEST_RIO)
class CRIO : public C232Comm
{
public:
CListBox& m_ListBox;
BYTE m_ba[2048];
BYTE *m_pStart;
const BYTE *m_pEnd;
int m_nCount;
DWORD m_dwFlags;
BYTE m_baRead[128];
int m_nState;
int m_nRead;
int m_nLeft;
BYTE m_bCheck;
BYTE m_baReplies[32];
int m_nReplies;
int TestModeActive;
DWORD m_dwAnalogRequest;
public:
CRIO (CListBox& ListBox) : m_ListBox (ListBox) { Init (); }
virtual ~CRIO () {};
public:
void Init ();
void RIOBordState (BYTE ID);
void DoEventLoop();
void EventLoop (const BYTE *buf, int nLen);
void AddReply (BYTE bReply);
void CheckReplies ();
void CheckAnalogRequest();
void SendCommand (const BYTE* pbPacket);
void SendPacket (const BYTE* pbPacket, int nLen);
void SetLamp (int lampNumber, int state);
void GeneralReset();
void ResetThrottle ();
void RequestCheck();
void RequestVersion();
void RequestAnalogUpdate();
public:
enum RIOCommand {
rio_CheckRequest = 0x80, // 128
rio_VersionRequest, // 129
rio_AnalogRequest, // 130
rio_ResetRequest, // 131
rio_LampRequest, // 132
rio_CheckReply, // 133
rio_VersionReply, // 134
rio_AnalogReply, // 135
rio_ButtonPressed, // 136
rio_ButtonReleased, // 137
rio_KeyPressed, // 138
rio_KeyReleased, // 139
rio_TestModeChange // 140
};
enum RIOStatusType {
BoardOk, BoardMissing, BoardBad, LampBad, RestartCount, AbandonCount, FullBufferCount
};
enum LampState {
solid=0, flashSlow=1, flashMed=2, flashFast=3,
state1Off=0x00, state1Dim=0x04, state1Bright=0x0C,
state2Off=0x00, state2Dim=0x10, state2Bright=0x30,
};
enum {
LampSolidOff = solid + state1Off + state2Off,
LampSolidDim = solid + state1Dim + state2Dim,
LampSolidBright = solid + state1Bright + state2Bright
};
};
#endif