MCPcopy Create free account
hub / github.com/GitJer/Some_RPI-Pico_stuff / decode

Function decode

SBUS/SBUS.cpp:23–48  ·  view source on GitHub ↗

function to decode the received SBUS data to actual steering commands

Source from the content-addressed store, hash-verified

21
22// function to decode the received SBUS data to actual steering commands
23void decode(uint8_t *data)
24{
25 uint16_t channels[16];
26 // see https://platformio.org/lib/show/5622/Bolder%20Flight%20Systems%20SBUS
27 channels[0] = (uint16_t)((data[0] | data[1] << 8) & 0x07FF);
28 channels[1] = (uint16_t)((data[1] >> 3 | data[2] << 5) & 0x07FF);
29 channels[2] = (uint16_t)((data[2] >> 6 | data[3] << 2 | data[4] << 10) & 0x07FF);
30 channels[3] = (uint16_t)((data[4] >> 1 | data[5] << 7) & 0x07FF);
31 channels[4] = (uint16_t)((data[5] >> 4 | data[6] << 4) & 0x07FF);
32 channels[5] = (uint16_t)((data[6] >> 7 | data[7] << 1 | data[8] << 9) & 0x07FF);
33 channels[6] = (uint16_t)((data[8] >> 2 | data[9] << 6) & 0x07FF);
34 channels[7] = (uint16_t)((data[9] >> 5 | data[10] << 3) & 0x07FF);
35 channels[8] = (uint16_t)((data[11] | data[12] << 8) & 0x07FF);
36 channels[9] = (uint16_t)((data[12] >> 3 | data[13] << 5) & 0x07FF);
37 channels[10] = (uint16_t)((data[13] >> 6 | data[14] << 2 | data[15] << 10) & 0x07FF);
38 channels[11] = (uint16_t)((data[15] >> 1 | data[16] << 7) & 0x07FF);
39 channels[12] = (uint16_t)((data[16] >> 4 | data[17] << 4) & 0x07FF);
40 channels[13] = (uint16_t)((data[17] >> 7 | data[18] << 1 | data[19] << 9) & 0x07FF);
41 channels[14] = (uint16_t)((data[19] >> 2 | data[20] << 6) & 0x07FF);
42 channels[15] = (uint16_t)((data[20] >> 5 | data[21] << 3) & 0x07FF);
43 for (int i = 0; i < 16; i++)
44 {
45 printf("%d \t", channels[i]);
46 }
47 printf("\n");
48}
49
50// Main function
51int main()

Callers 1

mainFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected