77 lines
2.1 KiB
C
77 lines
2.1 KiB
C
|
#ifndef __RigState_h__
|
||
|
#define __RigState_h__
|
||
|
|
||
|
#define UBITX_VFOA_UPDATE 0x01
|
||
|
#define UBITX_VFOB_UPDATE 0x02
|
||
|
#define UBITX_RIT_UPDATE 0x04
|
||
|
#define UBITX_XIT_UPDATE 0x08
|
||
|
#define UBITX_FLAGS_UPDATE 0x10
|
||
|
|
||
|
#define UBITX_VFOB_FLAG 0x01
|
||
|
#define UBITX_SPLIT_FLAG 0x02
|
||
|
#define UBITX_RIT_FLAG 0x04
|
||
|
#define UBITX_XIT_FLAG 0x08
|
||
|
#define UBITX_CW_FLAG 0x10
|
||
|
#define UBITX_USB_FLAG 0x20
|
||
|
#define UBITX_TX_FLAG 0x40
|
||
|
|
||
|
struct UBitxRigState {
|
||
|
uint8_t header = 0;
|
||
|
uint32_t vfo[2];
|
||
|
uint16_t rit;
|
||
|
uint16_t xit;
|
||
|
uint8_t flags = 0;
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
class UBitxRig {
|
||
|
public:
|
||
|
inline int freqA() const { return state.vfo[0]; }
|
||
|
inline int freqB() const { return state.vfo[1]; }
|
||
|
inline int freqRIT() const { return state.rit; }
|
||
|
inline int freqXIT() const { return state.xit; }
|
||
|
|
||
|
inline char vfo() const { return (state.flags & UBITX_VFOB_FLAG) == UBITX_VFOB_FLAG; }
|
||
|
inline char isSplit() const { return (state.flags & UBITX_SPLIT_FLAG) == UBITX_SPLIT_FLAG; }
|
||
|
inline char isRIT() const { return (state.flags & UBITX_RIT_FLAG) == UBITX_RIT_FLAG; }
|
||
|
inline char isXIT() const { return (state.flags & UBITX_XIT_FLAG) == UBITX_XIT_FLAG; }
|
||
|
inline char isCW() const { return (state.flags & UBITX_CW_FLAG) == UBITX_CW_FLAG; }
|
||
|
inline char isLSB() const { return (state.flags & UBITX_USB_FLAG) != UBITX_USB_FLAG; }
|
||
|
inline char isUSB() const { return (state.flags & UBITX_USB_FLAG) == UBITX_USB_FLAG; }
|
||
|
|
||
|
char* packDelta() {
|
||
|
buflen = 0;
|
||
|
|
||
|
// first byte: what fields have changed
|
||
|
buf[buflen++] = uint8_t(state.dirty);
|
||
|
|
||
|
// next (if req'd): VFO A frequency
|
||
|
if (state.dirty & UBITX_VFOA_UPDATE) {
|
||
|
packInt(state.vfo[0];
|
||
|
}
|
||
|
|
||
|
// next (if req'd): VFO B frequency
|
||
|
if (state.dirty & UBITX_VFOB_UPDATE) {
|
||
|
packInt(state.vfo[0];
|
||
|
}
|
||
|
|
||
|
|
||
|
private:
|
||
|
inline void packByte(uint8_t b) { buf[buflen++] = uint8_t(state.dirty);
|
||
|
|
||
|
inline void packInt(int i) {
|
||
|
int tmp = i;
|
||
|
for (int j = 0; j < 32; j+=8) {
|
||
|
tmp = tmp >> j;
|
||
|
buf[buflen++] = uint8_t(tmp & 0x000000FF);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
UBitxRigState state;
|
||
|
uint8_t buf[sizeof(uint8_t) + sizeof(UBitxRigState)];
|
||
|
int buflen = 0;
|
||
|
};
|
||
|
*/
|
||
|
|
||
|
#endif
|