LP Long Distance IR Vision Robot

Dependencies:   max77650_charger_sample BufferedSerial SX1276GenericLib Adafruit-MotorShield NEO-6m-GPS MAX17055_EZconfig Adafruit_GFX USBDeviceHT Adafruit-PWM-Servo-Driver

Committer:
dev_alexander
Date:
Wed Jul 18 21:25:17 2018 +0000
Revision:
24:e8d03912f303
Parent:
23:f74a50977593
Child:
25:1a031add188a
Modified how buffers are handled in various functions in GenericPingPong.cpp to accommodate for how the buffer sizes for TX and RX are different depending on slave or master status. Still need to finish global_buffers.cpp.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dev_alexander 23:f74a50977593 1 /** Description:
dev_alexander 23:f74a50977593 2 * This File is responsible for defining the buffers that will be used in
dev_alexander 23:f74a50977593 3 * various areas of the program. The buffers that are defined here will be
dev_alexander 23:f74a50977593 4 * refferenced in the main.cpp and will be filled with data in one of two ways:
dev_alexander 23:f74a50977593 5 *
dev_alexander 23:f74a50977593 6 * 1. The buffers will be filled with data upon receiving a successful payload
dev_alexander 23:f74a50977593 7 * transmission over LoRa. In GenericPingPong.cpp, the function OnRxDone()
dev_alexander 23:f74a50977593 8 * will call the function fillGlobalBufsWithPayload() that is responsible for
dev_alexander 23:f74a50977593 9 * filling the appropriate buffers with the payload data that was received
dev_alexander 23:f74a50977593 10 * by either the master or slave device by the other device that sent it.
dev_alexander 23:f74a50977593 11 *
dev_alexander 23:f74a50977593 12 * 2. The buffers will be used to fill up a payload buffer that will be sent
dev_alexander 23:f74a50977593 13 * over LoRa by either the master or slave device to the receiving device.
dev_alexander 23:f74a50977593 14 * The function fillPayloadWithGlobalBufs() will use the global buffers that
dev_alexander 23:f74a50977593 15 * are filled with data for various sensors in the main.cpp to construct a
dev_alexander 23:f74a50977593 16 * payload to deliver to the other device when SX1276PingPong() is called
dev_alexander 23:f74a50977593 17 * in file GenericPingPong.cpp.
dev_alexander 23:f74a50977593 18 *
dev_alexander 23:f74a50977593 19 */
dev_alexander 23:f74a50977593 20
dev_alexander 23:f74a50977593 21 #ifndef __GLOBAL_BUFFERS_H__
dev_alexander 23:f74a50977593 22 #define __GLOBAL_BUFFERS_H__
dev_alexander 23:f74a50977593 23
dev_alexander 23:f74a50977593 24 /***************************************************************************
dev_alexander 24:e8d03912f303 25 * Indexes for which byte specific data begins at in the payload buffer
dev_alexander 23:f74a50977593 26 **************************************************************************/
dev_alexander 24:e8d03912f303 27
dev_alexander 24:e8d03912f303 28 /* size of data in bytes that is acquired by the master device */
dev_alexander 24:e8d03912f303 29 const uint8_t size_of_ble = 2;
dev_alexander 24:e8d03912f303 30 /* size of data in bytes that is acquired by the slave device */
dev_alexander 24:e8d03912f303 31 const uint8_t size_of_grid_eye = 128;
dev_alexander 24:e8d03912f303 32 const uint8_t size_of_gps = 20;
dev_alexander 24:e8d03912f303 33 const uint8_t size_of_MAX17055 = 5;
dev_alexander 24:e8d03912f303 34 const uint8_t size_of_MAX77650 = 5;
dev_alexander 24:e8d03912f303 35
dev_alexander 24:e8d03912f303 36 const uint16_t PAYLOAD_BUFFER_SIZE_MASTER_TO_SLAVE = size_of_ble;
dev_alexander 24:e8d03912f303 37 const uint16_t PAYLOAD_BUFFER_SIZE_SLAVE_TO_MASTER = size_of_grid_eye + size_of_gps + size_of_MAX17055 + size_of_MAX77650;
dev_alexander 24:e8d03912f303 38
dev_alexander 23:f74a50977593 39 #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway
dev_alexander 24:e8d03912f303 40 /* These are indexs used to create the payload buffer to send to Slave */
dev_alexander 24:e8d03912f303 41 const uint8_t tx_idx_ble = 0; // 1st buf in tx payload (begins at byte 0)
dev_alexander 24:e8d03912f303 42
dev_alexander 24:e8d03912f303 43 /* These are indexs used to deconstruct received payload buffer sent by the Slave */
dev_alexander 24:e8d03912f303 44 const uint8_t rx_idx_grid_eye = 0; // 1st buf in rx payload (begins at byte 0)
dev_alexander 24:e8d03912f303 45 const uint8_t rx_idx_gps = rx_idx_grid_eye + size_of_grid_eye; // 2nd buf in rx payload
dev_alexander 24:e8d03912f303 46 const uint8_t rx_idx_MAX17055 = rx_idx_gps + size_of_gps; // 3rd buf in rx payload
dev_alexander 24:e8d03912f303 47 const uint8_t rx_idx_MAX77650 = rx_idx_MAX17055 + size_of_MAX17055; // 4th buf in rx payload
dev_alexander 24:e8d03912f303 48
dev_alexander 23:f74a50977593 49 #elif defined(TARGET_MAX32620FTHR) // Client Device: LoRa Controlled Robot
dev_alexander 24:e8d03912f303 50
dev_alexander 24:e8d03912f303 51 /* These are indexs used to create the payload buffer to send to Master */
dev_alexander 24:e8d03912f303 52 const uint8_t tx_idx_grid_eye = 0; // 1st buf in tx payload (begins at byte 0)
dev_alexander 24:e8d03912f303 53 const uint8_t tx_idx_gps = tx_idx_grid_eye + size_of_grid_eye; // 2nd buf in tx payload
dev_alexander 24:e8d03912f303 54 const uint8_t tx_idx_MAX17055 = tx_idx_gps + size_of_gps; // 3rd buf in tx payload
dev_alexander 24:e8d03912f303 55 const uint8_t tx_idx_MAX77650 = tx_idx_MAX17055 + size_of_MAX17055; // 4th buf in tx payload
dev_alexander 24:e8d03912f303 56
dev_alexander 24:e8d03912f303 57 /* These are indexs used to deconstruct received payload buffer sent by the Master */
dev_alexander 24:e8d03912f303 58 const uint8_t rx_idx_ble = 0; // 1st buf in rx payload (begins at byte 0)
dev_alexander 23:f74a50977593 59 #endif
dev_alexander 23:f74a50977593 60
dev_alexander 23:f74a50977593 61
dev_alexander 24:e8d03912f303 62 /***************************************************************************
dev_alexander 24:e8d03912f303 63 * Grid Eye Sensor Data Buffers
dev_alexander 24:e8d03912f303 64 **************************************************************************/
dev_alexander 24:e8d03912f303 65 #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway
dev_alexander 24:e8d03912f303 66 static char curr_raw_frame_data_from_slave[payload_grid_eye_size];
dev_alexander 24:e8d03912f303 67 static char prev_raw_frame_data_from_slave[payload_grid_eye_size];
dev_alexander 24:e8d03912f303 68 static int16_t conv_frame_data_from_slave[64];
dev_alexander 24:e8d03912f303 69 #elif defined(TARGET_MAX32620FTHR) // Client Device: LoRa Controlled Robot
dev_alexander 24:e8d03912f303 70 static char curr_raw_frame_data_to_master[128];
dev_alexander 24:e8d03912f303 71 #endif
dev_alexander 24:e8d03912f303 72
dev_alexander 24:e8d03912f303 73 /***************************************************************************
dev_alexander 24:e8d03912f303 74 * BLE Data Buffers
dev_alexander 24:e8d03912f303 75 **************************************************************************/
dev_alexander 24:e8d03912f303 76 #if defined(TARGET_MAX32630FTHR) // Master Device: BLE-to-LoRa Gateway
dev_alexander 24:e8d03912f303 77 static char curr_ble_data_to_slave[2];
dev_alexander 24:e8d03912f303 78 #elif defined(TARGET_MAX32620FTHR) // Slave Device: LoRa Controlled Robot
dev_alexander 24:e8d03912f303 79 static char curr_ble_data_from_master[2];
dev_alexander 24:e8d03912f303 80 static char prev_ble_data_from_master[2];
dev_alexander 24:e8d03912f303 81 #endif
dev_alexander 24:e8d03912f303 82
dev_alexander 24:e8d03912f303 83
dev_alexander 24:e8d03912f303 84 /**
dev_alexander 24:e8d03912f303 85 * @brief This function constructs a payload buffer that is used in transmitting data in a LoRa Message
dev_alexander 24:e8d03912f303 86 */
dev_alexander 24:e8d03912f303 87 int fillPayloadWithGlobalBufs();
dev_alexander 24:e8d03912f303 88
dev_alexander 24:e8d03912f303 89 /**
dev_alexander 24:e8d03912f303 90 * @brief This function deconstructs a payload buffer that contains data from a received LoRa Message
dev_alexander 24:e8d03912f303 91 */
dev_alexander 24:e8d03912f303 92 int fillGlobalBufsWithPayload();
dev_alexander 24:e8d03912f303 93
dev_alexander 23:f74a50977593 94 #endif // __GLOBAL_BUFFERS_H__