Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // We have to nibble swap and mask off other nibbles, because original code likely used bitfields
- // that truncated to chars, which were then nibble-swapped for little-endianness
- // lo x y hi when only nibble swapped = x lo hi y == correct endianness for ARM
- #define GETHORIZ(hi,lo) (((hi & 0x0F) << 4) | ((lo & 0xF0) >> 4))
- #define _16_BSWAP(x) (((x & 0xFF00) >> 8) | ((x & 0xFF) << 8))
- struct CmdBTBtn
- {
- unsigned char res1;
- unsigned char res2;
- unsigned char dstick;
- };
- struct CmdBTUpd_lr1
- {
- unsigned char res;
- unsigned short states;
- };
- struct CmdBTUpd_lr2
- {
- unsigned short states;
- unsigned char res;
- };
- struct StickData
- {
- unsigned char horiz_lo : 4;
- unsigned char res1 : 4;
- unsigned char battery : 4;
- unsigned char horiz_hi : 4;
- unsigned char vert : 8;
- };
- struct GyroData
- {
- unsigned char pitch_hi : 4; //0
- unsigned char res1 : 4;
- unsigned char res2 : 4; //1
- unsigned char pitch_lo : 4;
- unsigned char res3 : 4; //2
- unsigned char roll_hi : 4;
- unsigned char res4 : 4; //3
- unsigned char roll_lo : 4;
- unsigned char res5; //4
- unsigned char res6; //5
- unsigned char res7; //6
- unsigned char res8 : 4; //7
- unsigned char rroll; //8
- unsigned char res9 : 4;
- unsigned char res10 : 4; //9
- unsigned char rpitch; //10
- unsigned char res11 : 4;
- unsigned char res12 : 4; //11
- unsigned char ryaw; //12
- unsigned char res : 4;
- };
- struct Packet // # = char number
- {
- unsigned char type; // 0 0x3f, 0x21, 0x31,
- union // 1, 2, 3
- {
- struct CmdBTBtn btbtn;
- struct CmdBTUpd_lr1 btupd_lr1;
- struct CmdBTUpd_lr2 btupd_lr2;
- };
- unsigned char unknown1; // 4
- unsigned char unknown2; // 5 Subtype? 0x3f - see gyro_data
- struct StickData stick_lr1; // 6,7,8
- struct StickData stick_lr2; // 9,10,11
- unsigned char unknown3; // 12
- union
- {
- struct GyroData gyro_data; // 13-25
- struct stick_data2 // if packet[5] == 0x31, then +16/+19 is StickData?
- {
- unsigned char res1; //13
- unsigned char res2; //14
- unsigned char res3; //15
- struct StickData stick2_lr1; // 16,17,18
- struct StickData stick2_lr2; // 19,20,21
- unsigned int res4; // 22-25
- };
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement