This is example code that can get you started with building your own IR vision robot that communicates over LoRa
Dependencies: Adafruit-MotorShield Adafruit-PWM-Servo-Driver Adafruit_GFX BufferedSerial MAX17055_EZconfig NEO-6m-GPS SX1276GenericLib USBDeviceHT max32630fthr max77650_charger_sample
Fork of MAX326xxFTHR_LoRa_Example_test by
Diff: global_buffers.h
- Revision:
- 25:1a031add188a
- Parent:
- 24:e8d03912f303
- Child:
- 26:69aba05f010f
diff -r e8d03912f303 -r 1a031add188a global_buffers.h --- a/global_buffers.h Wed Jul 18 21:25:17 2018 +0000 +++ b/global_buffers.h Thu Jul 19 21:13:19 2018 +0000 @@ -19,76 +19,123 @@ */ #ifndef __GLOBAL_BUFFERS_H__ -#define __GLOBAL_BUFFERS_H__ +#define __GLOBAL_BUFFERS_H__\ + +#include "mbed.h" +#include "GenericPingPong.h" + /*************************************************************************** * Indexes for which byte specific data begins at in the payload buffer **************************************************************************/ +/* size of ID data that defines what the signature of the device is */ +const uint8_t size_signature = 8; /* size of data in bytes that is acquired by the master device */ -const uint8_t size_of_ble = 2; +const uint8_t size_of_ble = 2; + /* size of data in bytes that is acquired by the slave device */ const uint8_t size_of_grid_eye = 128; const uint8_t size_of_gps = 20; const uint8_t size_of_MAX17055 = 5; const uint8_t size_of_MAX77650 = 5; -const uint16_t PAYLOAD_BUFFER_SIZE_MASTER_TO_SLAVE = size_of_ble; -const uint16_t PAYLOAD_BUFFER_SIZE_SLAVE_TO_MASTER = size_of_grid_eye + size_of_gps + size_of_MAX17055 + size_of_MAX77650; +/* These are the sizes of each payload in bytes. Since there is different amount + * of data being sent in each direction, we need to declare the total size of + * the payload so we can instatiate the correct buffer sizes to store data that + * is to be delivered and for data that is received. + */ + +const uint16_t PAYLOAD_BUFFER_SIZE_MASTER_TO_SLAVE = size_signature + size_of_ble; +const uint16_t PAYLOAD_BUFFER_SIZE_SLAVE_TO_MASTER = size_signature + size_of_grid_eye + size_of_gps + size_of_MAX17055 + size_of_MAX77650; #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway /* These are indexs used to create the payload buffer to send to Slave */ - const uint8_t tx_idx_ble = 0; // 1st buf in tx payload (begins at byte 0) + const uint8_t tx_idx_signature = 0; // 1st buf in tx payload (begins at byte 0) + const uint8_t tx_idx_ble = tx_idx_signature + size_signature; // 2nd buf in tx payload - /* These are indexs used to deconstruct received payload buffer sent by the Slave */ - const uint8_t rx_idx_grid_eye = 0; // 1st buf in rx payload (begins at byte 0) - const uint8_t rx_idx_gps = rx_idx_grid_eye + size_of_grid_eye; // 2nd buf in rx payload - const uint8_t rx_idx_MAX17055 = rx_idx_gps + size_of_gps; // 3rd buf in rx payload - const uint8_t rx_idx_MAX77650 = rx_idx_MAX17055 + size_of_MAX17055; // 4th buf in rx payload + /* These are indexs used to deconstruct received payload buffer sent by the Slave */ + const uint8_t rx_idx_signature = 0; // 1st buf in rx payload (begins at byte 0) + const uint8_t rx_idx_grid_eye = rx_idx_signature + size_signature; // 2nd buf in rx payload + const uint8_t rx_idx_gps = rx_idx_grid_eye + size_of_grid_eye; // 3rd buf in rx payload + const uint8_t rx_idx_MAX17055 = rx_idx_gps + size_of_gps; // 4th buf in rx payload + const uint8_t rx_idx_MAX77650 = rx_idx_MAX17055 + size_of_MAX17055; // 5th buf in rx payload #elif defined(TARGET_MAX32620FTHR) // Client Device: LoRa Controlled Robot - /* These are indexs used to create the payload buffer to send to Master */ - const uint8_t tx_idx_grid_eye = 0; // 1st buf in tx payload (begins at byte 0) - const uint8_t tx_idx_gps = tx_idx_grid_eye + size_of_grid_eye; // 2nd buf in tx payload - const uint8_t tx_idx_MAX17055 = tx_idx_gps + size_of_gps; // 3rd buf in tx payload - const uint8_t tx_idx_MAX77650 = tx_idx_MAX17055 + size_of_MAX17055; // 4th buf in tx payload + const uint8_t tx_idx_signature = 0; // 1st buf in tx payload (begins at byte 0) + const uint8_t tx_idx_grid_eye = tx_idx_signature + size_signature; // 2nd buf in tx payload + const uint8_t tx_idx_gps = tx_idx_grid_eye + size_of_grid_eye; // 3rd buf in tx payload + const uint8_t tx_idx_MAX17055 = tx_idx_gps + size_of_gps; // 4th buf in tx payload + const uint8_t tx_idx_MAX77650 = tx_idx_MAX17055 + size_of_MAX17055; // 5th buf in tx payload /* These are indexs used to deconstruct received payload buffer sent by the Master */ - const uint8_t rx_idx_ble = 0; // 1st buf in rx payload (begins at byte 0) + const uint8_t rx_idx_signature = 0; // 1st buf in rx payload (begins at byte 0) + const uint8_t rx_idx_ble = rx_idx_signature + size_signature; // 2nd buf in rx payload #endif /*************************************************************************** + * BLE Data Buffers + **************************************************************************/ +#if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway + static char curr_ble_data_to_slave[size_of_ble]; +#elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot + static char curr_ble_data_from_master[size_of_ble]; + static char prev_ble_data_from_master[size_of_ble]; +#endif + +/*************************************************************************** * Grid Eye Sensor Data Buffers **************************************************************************/ #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway - static char curr_raw_frame_data_from_slave[payload_grid_eye_size]; - static char prev_raw_frame_data_from_slave[payload_grid_eye_size]; + static char curr_raw_frame_data_from_slave[size_of_grid_eye]; + static char prev_raw_frame_data_from_slave[size_of_grid_eye]; static int16_t conv_frame_data_from_slave[64]; #elif defined(TARGET_MAX32620FTHR) // Client Device: LoRa Controlled Robot - static char curr_raw_frame_data_to_master[128]; + static char curr_raw_frame_data_to_master[size_of_grid_eye]; + static char prev_raw_frame_data_to_master[size_of_grid_eye]; + static int16_t conv_frame_data_to_master[64]; #endif /*************************************************************************** - * BLE Data Buffers + * GPS Data Buffers + **************************************************************************/ +#if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway + static char curr_gps_data_from_slave[size_of_gps]; + static char prev_gps_data_from_slave[size_of_gps]; +#elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot + static char curr_gps_data_to_master[size_of_gps]; +#endif + +/*************************************************************************** + * MAX17055 Data Buffers **************************************************************************/ #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway - static char curr_ble_data_to_slave[2]; + static char curr_MAX17055_from_slave[size_of_MAX17055]; + static char prev_MAX17055_from_slave[size_of_MAX17055]; #elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot - static char curr_ble_data_from_master[2]; - static char prev_ble_data_from_master[2]; + static char curr_MAX17055_to_master[size_of_MAX17055]; #endif +/*************************************************************************** + * MAX77650 Data Buffers + **************************************************************************/ +#if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway + static char curr_MAX77650_from_slave[size_of_MAX77650]; + static char prev_MAX77650_from_slave[size_of_MAX77650]; +#elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot + static char curr_MAX77650_to_master[size_of_MAX77650]; +#endif /** * @brief This function constructs a payload buffer that is used in transmitting data in a LoRa Message */ -int fillPayloadWithGlobalBufs(); +void fillPayloadWithGlobalBufs(uint8_t * payload_buffer_tx); /** * @brief This function deconstructs a payload buffer that contains data from a received LoRa Message */ -int fillGlobalBufsWithPayload(); +void fillGlobalBufsWithPayload(uint8_t * payload_buffer_rx); #endif // __GLOBAL_BUFFERS_H__ \ No newline at end of file