1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- * uart.h
- *
- * Author: Andrey Koryagin https://blog.avislab.com/
- */
- #ifndef INC_UART_H_
- #define INC_UART_H_
- #define BUFFER_LENGTH 64
- #define SYNC_BYTE 0xC8
- #define FRAME_LENGTH_BYTE 1
- #define FRAME_TYPE_BYTE 2
- #define FRAME_TYPE_Battery_Sensor 0x08
- #define FRAME_TYPE_Link_Statistics 0x14
- #define FRAME_TYPE_RC_Channels 0x16
- typedef struct
- {
- uint8_t up_rssi_ant1; // Uplink RSSI Antenna 1 (dBm * -1)
- uint8_t up_rssi_ant2; // Uplink RSSI Antenna 2 (dBm * -1)
- uint8_t up_link_quality; // Uplink Package success rate / Link quality (%)
- int8_t up_snr; // Uplink SNR (dB)
- uint8_t active_antenna; // number of currently best antenna
- uint8_t rf_profile; // enum {4fps = 0 , 50fps, 150fps}
- uint8_t up_rf_power; // enum {0mW = 0, 10mW, 25mW, 100mW,
- // 500mW, 1000mW, 2000mW, 250mW, 50mW}
- uint8_t down_rssi; // Downlink RSSI (dBm * -1)
- uint8_t down_link_quality; // Downlink Package success rate / Link quality (%)
- int8_t down_snr;
- } RC_LinkStatistics;
- typedef struct
- {
- unsigned int channel_01: 11;
- unsigned int channel_02: 11;
- unsigned int channel_03: 11;
- unsigned int channel_04: 11;
- unsigned int channel_05: 11;
- unsigned int channel_06: 11;
- unsigned int channel_07: 11;
- unsigned int channel_08: 11;
- unsigned int channel_09: 11;
- unsigned int channel_10: 11;
- unsigned int channel_11: 11;
- unsigned int channel_12: 11;
- unsigned int channel_13: 11;
- unsigned int channel_14: 11;
- unsigned int channel_15: 11;
- unsigned int channel_16: 11;
- } __PACKED RC_Channels;
- /*
- typedef struct
- {
- int16_t voltage;
- int16_t current;
- int32_t capacity:24;
- int8_t remaining;
- } __PACKED RC_Battery_Sensors;
- */
- typedef struct
- {
- uint8_t sync_byte;
- uint8_t length;
- uint8_t type;
- unsigned int voltage:16;
- unsigned int current:16;
- unsigned int capacity:24;
- unsigned int remaining:8;
- uint8_t crc;
- } __PACKED RC_RC_BatterySensorsFrame;
- void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size);
- void Uart_StartReceive();
- void Uart_StartSendFrame();
- void Make_Frame();
- unsigned int Uart_GetChannel(uint8_t ch);
- void Uart_IncCounter(void);
- uint8_t Uart_GetCounter(void);
- #endif /* INC_UART_H_ */
|