function to decode the received SBUS data to actual steering commands
| 21 | |
| 22 | // function to decode the received SBUS data to actual steering commands |
| 23 | void 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 |
| 51 | int main() |