MAX20361 System Demo with Low Power 2 mode

Dependencies:   SX1276GenericLib USBDevice

Fork of NonPingPong_PICO_LoRa by Walter Luu

Committer:
walterluu
Date:
Tue Oct 13 00:45:46 2020 +0000
Revision:
5:9e751733a6f3
Parent:
3:85fc843a9d7d
Child:
6:51f492ca61a2
Firmware Master and Slave in functional stage

Who changed what in which revision?

UserRevisionLine numberNew contents of line
walterluu 3:85fc843a9d7d 1
walterluu 0:664d9df11a00 2 #include "mbed.h"
walterluu 3:85fc843a9d7d 3
walterluu 3:85fc843a9d7d 4 // Board pins related
walterluu 0:664d9df11a00 5 #include "PinMap.h"
walterluu 0:664d9df11a00 6
walterluu 3:85fc843a9d7d 7 // LORA related
walterluu 3:85fc843a9d7d 8 #include "global_buffers.h"
walterluu 3:85fc843a9d7d 9 #include "GenericPingPong2.h"
walterluu 3:85fc843a9d7d 10 #define FEATURE_LORA
walterluu 3:85fc843a9d7d 11 #include "sx1276-mbed-hal.h"
walterluu 3:85fc843a9d7d 12
walterluu 3:85fc843a9d7d 13 #include "main.h"
walterluu 0:664d9df11a00 14
walterluu 3:85fc843a9d7d 15 // OT07 related
walterluu 3:85fc843a9d7d 16 #include "OT07_lib.h"
walterluu 3:85fc843a9d7d 17 #define CONVERT_T_DELAY 30
walterluu 3:85fc843a9d7d 18
walterluu 3:85fc843a9d7d 19 // MAX44009 related
walterluu 3:85fc843a9d7d 20 #include "MAX44009_lib.h"
walterluu 3:85fc843a9d7d 21
walterluu 3:85fc843a9d7d 22 // AO32 related
walterluu 3:85fc843a9d7d 23 #include "AO32_lib.h"
walterluu 3:85fc843a9d7d 24
walterluu 3:85fc843a9d7d 25 //#if defined(TARGET_MAX32630FTHR) // using the RFM95 board
walterluu 3:85fc843a9d7d 26 // #include "max32630fthr.h"
walterluu 3:85fc843a9d7d 27 // MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
walterluu 0:664d9df11a00 28 //#endif
walterluu 0:664d9df11a00 29
walterluu 3:85fc843a9d7d 30 // Virtual COM related
walterluu 3:85fc843a9d7d 31 #include "USBSerial.h" // for virtual COM
walterluu 0:664d9df11a00 32 #define BS 8 // ASCII Back Space
walterluu 0:664d9df11a00 33 #define CR 13 // ASCII Carriage Return
walterluu 0:664d9df11a00 34
walterluu 0:664d9df11a00 35 // Virtual serial port over USB TODO NEW VID PID NEEDED!!
walterluu 0:664d9df11a00 36 USBSerial pc(0x0B6A, 0x0042, 0x0001, false);
walterluu 0:664d9df11a00 37
walterluu 3:85fc843a9d7d 38 ///***************************************************************************
walterluu 3:85fc843a9d7d 39 // * Virtual COM Instantiation
walterluu 3:85fc843a9d7d 40 // **************************************************************************/
walterluu 3:85fc843a9d7d 41 //#include "USBSerial.h" // for virtual COM
walterluu 3:85fc843a9d7d 42 //#define BS 8 // ASCII Back Space
walterluu 3:85fc843a9d7d 43 //#define CR 13 // ASCII Carriage Return
walterluu 3:85fc843a9d7d 44 //// Virtual serial port over USB TODO NEW VID PID NEEDED!!
walterluu 3:85fc843a9d7d 45 //USBSerial pc(0x0B6A, 0x0042, 0x0001, false);
walterluu 3:85fc843a9d7d 46
walterluu 3:85fc843a9d7d 47 /***************************************************************************
walterluu 3:85fc843a9d7d 48 * LEDs Instantiation
walterluu 3:85fc843a9d7d 49 **************************************************************************/
walterluu 0:664d9df11a00 50 DigitalOut myled(LED2); // LED = LED2 green
walterluu 0:664d9df11a00 51 DigitalOut rLED(LED1); // red LED
walterluu 0:664d9df11a00 52 DigitalOut bLED(LED3); // blue LED
walterluu 3:85fc843a9d7d 53 //DigitalOut *led3;
walterluu 0:664d9df11a00 54
walterluu 3:85fc843a9d7d 55 /***************************************************************************
walterluu 3:85fc843a9d7d 56 * I2C Bus Instantiation
walterluu 3:85fc843a9d7d 57 **************************************************************************/
walterluu 3:85fc843a9d7d 58 I2C i2cBus0(P1_6, P1_7); // I2C of MAX32625PICO
walterluu 0:664d9df11a00 59
walterluu 0:664d9df11a00 60
walterluu 3:85fc843a9d7d 61 bool get_data_flag = false; // used for data tramission frequency
walterluu 0:664d9df11a00 62
walterluu 0:664d9df11a00 63
walterluu 3:85fc843a9d7d 64 //Timer setup
walterluu 3:85fc843a9d7d 65 Ticker timer_1; // timer for data tramission frequency
walterluu 3:85fc843a9d7d 66
walterluu 0:664d9df11a00 67
walterluu 3:85fc843a9d7d 68 void onTimerInterrupt(){
walterluu 3:85fc843a9d7d 69 get_data_flag = true;
walterluu 3:85fc843a9d7d 70 }
walterluu 0:664d9df11a00 71
walterluu 0:664d9df11a00 72 int main() {
walterluu 0:664d9df11a00 73
walterluu 3:85fc843a9d7d 74 /***************************************************************************
walterluu 0:664d9df11a00 75
walterluu 3:85fc843a9d7d 76
walterluu 3:85fc843a9d7d 77
walterluu 3:85fc843a9d7d 78 /* Setup begins here: */
walterluu 3:85fc843a9d7d 79 #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 80 pc.printf("MAX32625PICO: MASTER DEVICE\r\n");
walterluu 3:85fc843a9d7d 81 wait(1);
walterluu 3:85fc843a9d7d 82 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 83 pc.printf("MAX32625PICO: SLAVE DEVICE\r\n");
walterluu 3:85fc843a9d7d 84 wait(1);
walterluu 3:85fc843a9d7d 85 #endif
walterluu 3:85fc843a9d7d 86
walterluu 3:85fc843a9d7d 87 /* Introduction text: */
walterluu 3:85fc843a9d7d 88 pc.printf("Welcome to the SX1276GenericLib\r\n");
walterluu 3:85fc843a9d7d 89 // wait(5);
walterluu 3:85fc843a9d7d 90 pc.printf("Starting a simple LoRa PingPong\r\n");
walterluu 3:85fc843a9d7d 91 // wait(5);
walterluu 3:85fc843a9d7d 92
walterluu 3:85fc843a9d7d 93 /***************************************************************************
walterluu 3:85fc843a9d7d 94 * Combined Payload Buffers for LoRa Communications
walterluu 3:85fc843a9d7d 95 **************************************************************************/
walterluu 3:85fc843a9d7d 96 uint8_t BufferTx[BufferSizeTx]; // more info in global_buffers.h
walterluu 3:85fc843a9d7d 97 uint8_t BufferRx[BufferSizeRx]; // more info in global_buffers.h
walterluu 3:85fc843a9d7d 98
walterluu 3:85fc843a9d7d 99 /***************************************************************************
walterluu 3:85fc843a9d7d 100 * Identification Buffers
walterluu 3:85fc843a9d7d 101 **************************************************************************/
walterluu 3:85fc843a9d7d 102 #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 103 uint8_t ID_of_slave[size_signature];
walterluu 3:85fc843a9d7d 104 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 105 uint8_t ID_of_master[size_signature];
walterluu 3:85fc843a9d7d 106 #endif
walterluu 3:85fc843a9d7d 107
walterluu 3:85fc843a9d7d 108 /***************************************************************************
walterluu 3:85fc843a9d7d 109 * Dummy Data Buffers
walterluu 3:85fc843a9d7d 110 **************************************************************************/
walterluu 3:85fc843a9d7d 111 #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 112 uint8_t curr_dum_to_slave[size_of_dum];
walterluu 3:85fc843a9d7d 113 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 114 uint8_t curr_dum_from_master[size_of_dum];
walterluu 3:85fc843a9d7d 115 uint8_t prev_dum_from_master[size_of_dum];
walterluu 3:85fc843a9d7d 116 #endif
walterluu 3:85fc843a9d7d 117
walterluu 3:85fc843a9d7d 118 /***************************************************************************
walterluu 3:85fc843a9d7d 119 * MAX30208 Data Buffers
walterluu 3:85fc843a9d7d 120 **************************************************************************/
walterluu 3:85fc843a9d7d 121 #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 122 // uint8_t curr_MAX77650_from_slave[size_of_MAX77650];
walterluu 5:9e751733a6f3 123 // uint8_t curr_raw_temp_from_slave[size_of_MAX30208];
walterluu 5:9e751733a6f3 124 char curr_raw_temp_from_slave[size_of_MAX30208]; // to match data type
walterluu 3:85fc843a9d7d 125 // uint8_t prev_MAX77650_from_slave[size_of_MAX77650];
walterluu 5:9e751733a6f3 126 // uint8_t prev_raw_temp_from_slave[size_of_MAX30208];
walterluu 3:85fc843a9d7d 127 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 128 // uint8_t curr_MAX77650_to_master[size_of_MAX77650];
walterluu 3:85fc843a9d7d 129 // bool chrg_status = false; //True = ON False = OFF
walterluu 3:85fc843a9d7d 130 uint8_t curr_raw_temp_to_master[size_of_MAX30208];
walterluu 3:85fc843a9d7d 131 #endif
walterluu 3:85fc843a9d7d 132
walterluu 0:664d9df11a00 133
walterluu 3:85fc843a9d7d 134 /***************************************************************************
walterluu 3:85fc843a9d7d 135 * MAX44009 Data Buffers
walterluu 3:85fc843a9d7d 136 **************************************************************************/
walterluu 3:85fc843a9d7d 137 #if MASTER == 1 // Master Device
walterluu 5:9e751733a6f3 138 // uint8_t curr_raw_light_from_slave[size_of_MAX44009];
walterluu 5:9e751733a6f3 139 char curr_raw_light_from_slave[size_of_MAX44009]; // to match data type
walterluu 5:9e751733a6f3 140 // uint8_t prev_raw_light_from_slave[size_of_MAX44009];
walterluu 3:85fc843a9d7d 141 // static int16_t conv_frame_data_from_slave[64];
walterluu 3:85fc843a9d7d 142 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 143 uint8_t curr_raw_light_to_master[size_of_MAX44009];
walterluu 3:85fc843a9d7d 144 // static char prev_raw_light_data_to_master[size_of_MAX44009];
walterluu 3:85fc843a9d7d 145 // static int16_t conv_frame_data_to_master[64];
walterluu 3:85fc843a9d7d 146 #endif
walterluu 3:85fc843a9d7d 147
walterluu 3:85fc843a9d7d 148 /***************************************************************************
walterluu 3:85fc843a9d7d 149 * MAX20361 Data Buffers
walterluu 3:85fc843a9d7d 150 **************************************************************************/
walterluu 3:85fc843a9d7d 151 #if MASTER == 1 // Master Device
walterluu 5:9e751733a6f3 152 // uint8_t curr_raw_AO32_from_slave[size_of_MAX20361];
walterluu 5:9e751733a6f3 153 char curr_raw_AO32_from_slave[size_of_MAX20361]; // to match data type
walterluu 5:9e751733a6f3 154 // uint8_t prev_raw_AO32_from_slave[size_of_MAX20361];
walterluu 3:85fc843a9d7d 155 // static int16_t conv_frame_data_from_slave[64];
walterluu 3:85fc843a9d7d 156 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 157 uint8_t curr_raw_AO32_to_master[size_of_MAX20361];
walterluu 3:85fc843a9d7d 158 // static char prev_raw_AO32_data_to_master[size_of_MAX20361];
walterluu 3:85fc843a9d7d 159 // static int16_t conv_frame_data_to_master[64];
walterluu 3:85fc843a9d7d 160 #endif
walterluu 0:664d9df11a00 161
walterluu 3:85fc843a9d7d 162 /***************************************************************************
walterluu 3:85fc843a9d7d 163 * Other Data Buffers
walterluu 3:85fc843a9d7d 164 **************************************************************************/
walterluu 3:85fc843a9d7d 165 #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 166 // uint8_t curr_raw_other_from_slave[size_of_other];
walterluu 3:85fc843a9d7d 167 // uint8_t prev_raw_other_from_slave[size_of_other];
walterluu 3:85fc843a9d7d 168 // static int16_t conv_frame_data_from_slave[64];
walterluu 3:85fc843a9d7d 169 #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 170 // uint8_t curr_raw_other_to_master[size_of_other];
walterluu 3:85fc843a9d7d 171 // static char prev_raw_other_data_to_master[size_of_other];
walterluu 3:85fc843a9d7d 172 // static int16_t conv_frame_data_to_master[64];
walterluu 3:85fc843a9d7d 173 #endif
walterluu 3:85fc843a9d7d 174
walterluu 3:85fc843a9d7d 175 /***************************************************************************
walterluu 3:85fc843a9d7d 176 * Finish Setting up LoRa Radios: This passes in pointers to Buffers to send
walterluu 3:85fc843a9d7d 177 **************************************************************************/
walterluu 3:85fc843a9d7d 178 SX1276PingPongSetup(BufferTx, BufferRx, &pc);
walterluu 3:85fc843a9d7d 179
walterluu 3:85fc843a9d7d 180 // Pointer Tutorials
walterluu 3:85fc843a9d7d 181 // https://www.tutorialspoint.com/cprogramming/c_pointers.htm
walterluu 3:85fc843a9d7d 182
walterluu 3:85fc843a9d7d 183 /***************************************************************************
walterluu 3:85fc843a9d7d 184 * Create Dummy Data For Master and Slave
walterluu 3:85fc843a9d7d 185 **************************************************************************/
walterluu 3:85fc843a9d7d 186 // Array Tutorials
walterluu 3:85fc843a9d7d 187 // http://www.cplusplus.com/doc/tutorial/arrays/
walterluu 3:85fc843a9d7d 188 #if MASTER == 1
walterluu 3:85fc843a9d7d 189 // curr_dum_to_slave[0] = {33, 34};
walterluu 3:85fc843a9d7d 190 curr_dum_to_slave[0] = 33;
walterluu 3:85fc843a9d7d 191 curr_dum_to_slave[1] = 34;
walterluu 3:85fc843a9d7d 192 #endif
walterluu 0:664d9df11a00 193
walterluu 3:85fc843a9d7d 194 #if SLAVE == 1
walterluu 3:85fc843a9d7d 195 // curr_raw_temp_to_master[size_of_MAX30208] = {10, 13, 15, 17, 19};
walterluu 3:85fc843a9d7d 196 curr_raw_temp_to_master[0] = 99;
walterluu 3:85fc843a9d7d 197 curr_raw_temp_to_master[1] = 99;
walterluu 3:85fc843a9d7d 198 // curr_raw_temp_to_master[2] = 15;
walterluu 3:85fc843a9d7d 199 // curr_raw_temp_to_master[3] = 17;
walterluu 3:85fc843a9d7d 200 // curr_raw_temp_to_master[4] = 19;
walterluu 3:85fc843a9d7d 201 // curr_raw_light_to_master[size_of_MAX44009] = {25, 26, 27, 28, 29};
walterluu 3:85fc843a9d7d 202 curr_raw_light_to_master[0] = 25;
walterluu 3:85fc843a9d7d 203 curr_raw_light_to_master[1] = 26;
walterluu 3:85fc843a9d7d 204 // curr_raw_light_to_master[2] = 27;
walterluu 3:85fc843a9d7d 205 // curr_raw_light_to_master[3] = 28;
walterluu 3:85fc843a9d7d 206 // curr_raw_light_to_master[4] = 29;
walterluu 3:85fc843a9d7d 207 // curr_raw_AO32_to_master[size_of_MAX20361] = {99, 100, 101, 102, 103};
walterluu 3:85fc843a9d7d 208 curr_raw_AO32_to_master[0] = 99;
walterluu 3:85fc843a9d7d 209 curr_raw_AO32_to_master[1] = 100;
walterluu 3:85fc843a9d7d 210 curr_raw_AO32_to_master[2] = 101;
walterluu 3:85fc843a9d7d 211 curr_raw_AO32_to_master[3] = 102;
walterluu 3:85fc843a9d7d 212 // curr_raw_AO32_to_master[4] = 103;
walterluu 3:85fc843a9d7d 213 // curr_raw_other_to_master[size_of_other] = {20, 30, 40, 50, 60, 70, 80};
walterluu 3:85fc843a9d7d 214 // curr_raw_other_to_master[0] = 20;
walterluu 3:85fc843a9d7d 215 // curr_raw_other_to_master[1] = 30;
walterluu 3:85fc843a9d7d 216 // curr_raw_other_to_master[2] = 40;
walterluu 3:85fc843a9d7d 217 // curr_raw_other_to_master[3] = 50;
walterluu 3:85fc843a9d7d 218 // curr_raw_other_to_master[4] = 60;
walterluu 3:85fc843a9d7d 219 // curr_raw_other_to_master[5] = 70;
walterluu 3:85fc843a9d7d 220 // curr_raw_other_to_master[6] = 80;
walterluu 3:85fc843a9d7d 221
walterluu 3:85fc843a9d7d 222
walterluu 3:85fc843a9d7d 223 #endif
walterluu 3:85fc843a9d7d 224
walterluu 3:85fc843a9d7d 225 /***************************************************************************
walterluu 3:85fc843a9d7d 226 * Loop Counter
walterluu 3:85fc843a9d7d 227 **************************************************************************/
walterluu 3:85fc843a9d7d 228 int loopCnt = 0;
walterluu 3:85fc843a9d7d 229
walterluu 3:85fc843a9d7d 230 #if SLAVE == 1
walterluu 3:85fc843a9d7d 231 //************* init ticker timer callbacks ****************
walterluu 3:85fc843a9d7d 232 timer_1.attach(&onTimerInterrupt, 3); //LED3 toggles every 3 seconds
walterluu 3:85fc843a9d7d 233
walterluu 3:85fc843a9d7d 234 //************* OT07 Variables ****************
walterluu 3:85fc843a9d7d 235 // char data[5];
walterluu 3:85fc843a9d7d 236 char rawtempdata[2];
walterluu 3:85fc843a9d7d 237 char OT07_i2c_add = 0xA0;
walterluu 3:85fc843a9d7d 238 // TempResponse T;
walterluu 3:85fc843a9d7d 239
walterluu 3:85fc843a9d7d 240 //************* MAX44009 Variables ****************
walterluu 3:85fc843a9d7d 241 char rawluxdata[2];
walterluu 5:9e751733a6f3 242 char MAX44009_i2c_add = 0x94; // 0b1001 010x
walterluu 3:85fc843a9d7d 243
walterluu 3:85fc843a9d7d 244 //************* AO32 Variables ****************
walterluu 3:85fc843a9d7d 245 char rawOCVdata[2]; // only needs 1
walterluu 3:85fc843a9d7d 246 char rawCntdata[2];
walterluu 3:85fc843a9d7d 247 char AO32_i2c_add = 0x2A; // 0b0010 101x
walterluu 3:85fc843a9d7d 248
walterluu 3:85fc843a9d7d 249 #endif
walterluu 0:664d9df11a00 250
walterluu 3:85fc843a9d7d 251 while (1) {
walterluu 3:85fc843a9d7d 252
walterluu 3:85fc843a9d7d 253 // Application details:
walterluu 3:85fc843a9d7d 254 //1. Set a fixed timer.
walterluu 3:85fc843a9d7d 255 //2. Data sent from Master to Slave.
walterluu 3:85fc843a9d7d 256 //3. Display data and repeat from 1.
walterluu 3:85fc843a9d7d 257
walterluu 3:85fc843a9d7d 258
walterluu 3:85fc843a9d7d 259 #if SLAVE == 1
walterluu 3:85fc843a9d7d 260 if(get_data_flag) {
walterluu 3:85fc843a9d7d 261
walterluu 3:85fc843a9d7d 262 //reset the flag
walterluu 3:85fc843a9d7d 263 get_data_flag = false;
walterluu 3:85fc843a9d7d 264 pc.printf("Timer interval reached!\r\n");
walterluu 3:85fc843a9d7d 265
walterluu 3:85fc843a9d7d 266 /***************************************************************************
walterluu 3:85fc843a9d7d 267 * Temperature Sensor Data Measurement
walterluu 3:85fc843a9d7d 268 **************************************************************************/
walterluu 3:85fc843a9d7d 269 // obtain register hex values
walterluu 3:85fc843a9d7d 270 convert_temperature(&i2cBus0, OT07_i2c_add); //send OW convert selected device
walterluu 3:85fc843a9d7d 271 wait_ms(CONVERT_T_DELAY); //wait 20 ms for convert temperature to complete
walterluu 3:85fc843a9d7d 272 int temp_error = OT07_read_register(&i2cBus0, OT07_i2c_add, OT07_FIFO_DATA, rawtempdata, 2);
walterluu 5:9e751733a6f3 273 // pc.printf("OT07 add[%02X] data[%02X] data[%02X]\r\n", OT07_FIFO_DATA, rawtempdata[0], rawtempdata[1]);
walterluu 3:85fc843a9d7d 274
walterluu 3:85fc843a9d7d 275 //calculate temperature from data
walterluu 3:85fc843a9d7d 276 int count = (int)(rawtempdata[0]*256 + rawtempdata[1]);
walterluu 3:85fc843a9d7d 277 if (count >= 32768)count = count - 65536; // 2s comp
walterluu 3:85fc843a9d7d 278 double Temp = (double)count*0.005;
walterluu 3:85fc843a9d7d 279 pc.printf("OT07 temperature[%.3f] status[%d]\r\n", Temp, temp_error);
walterluu 5:9e751733a6f3 280 double tempFinal = calc_temperature(rawtempdata);
walterluu 5:9e751733a6f3 281 pc.printf("OT07 Final temperature[%.3f] \r\n", tempFinal);
walterluu 5:9e751733a6f3 282 pc.printf("\r\n");
walterluu 5:9e751733a6f3 283
walterluu 3:85fc843a9d7d 284
walterluu 3:85fc843a9d7d 285 //fill raw temp data into the array
walterluu 3:85fc843a9d7d 286 curr_raw_temp_to_master[0] = rawtempdata[0];
walterluu 3:85fc843a9d7d 287 curr_raw_temp_to_master[1] = rawtempdata[1];
walterluu 0:664d9df11a00 288
walterluu 3:85fc843a9d7d 289 /***************************************************************************
walterluu 3:85fc843a9d7d 290 * Light Intensity Sensor Data Measurement
walterluu 3:85fc843a9d7d 291 **************************************************************************/
walterluu 3:85fc843a9d7d 292 // obtain register hex values
walterluu 5:9e751733a6f3 293 int lux_error = MAX44009_read_lux_register(&i2cBus0, MAX44009_i2c_add, MAX44009_LUX_HI, rawluxdata);
walterluu 5:9e751733a6f3 294 // int lux_error1 = MAX44009_read_register(&i2cBus0, MAX44009_i2c_add, MAX44009_LUX_HI, &rawluxdata[0]);
walterluu 5:9e751733a6f3 295 // int lux_error2 = MAX44009_read_register(&i2cBus0, MAX44009_i2c_add, MAX44009_LUX_LO, &rawluxdata[1]);
walterluu 5:9e751733a6f3 296 // pc.printf("MAX44009 hi_add[%02X] hi_data[%02X] lo_add[%02X] lo_data[%02X]\r\n", MAX44009_LUX_HI, rawluxdata[0], MAX44009_LUX_LO, rawluxdata[1]);
walterluu 3:85fc843a9d7d 297
walterluu 3:85fc843a9d7d 298 //calculate temperature from data
walterluu 3:85fc843a9d7d 299 int exponent = int(rawluxdata[0] >> 4);
walterluu 5:9e751733a6f3 300 int mantissa = (int)((rawluxdata[0] << 4) & 0xF0) + (int)(rawluxdata[1]);
walterluu 3:85fc843a9d7d 301 double lux = 0.045 * mantissa * pow((double) 2, exponent);
walterluu 5:9e751733a6f3 302 // pc.printf("MAX44009 exponent[%d] mantissa[%d]\r\n", exponent, mantissa);
walterluu 5:9e751733a6f3 303 // pc.printf("MAX44009 lux[%.2f] status[%d] status[%d]\r\n", lux, lux_error1, lux_error2);
walterluu 5:9e751733a6f3 304 pc.printf("MAX44009 lux[%.2f] status[%d]\r\n", lux, lux_error);
walterluu 5:9e751733a6f3 305 double luxFinal = calc_lux(rawluxdata);
walterluu 5:9e751733a6f3 306 pc.printf("MAX44009 Final Lux[%.2f] \r\n", luxFinal);
walterluu 5:9e751733a6f3 307 pc.printf("\r\n");
walterluu 3:85fc843a9d7d 308
walterluu 3:85fc843a9d7d 309 //fill raw lux data into the array
walterluu 5:9e751733a6f3 310 curr_raw_light_to_master[0] = rawluxdata[0];
walterluu 5:9e751733a6f3 311 curr_raw_light_to_master[1] = rawluxdata[1];
walterluu 3:85fc843a9d7d 312
walterluu 3:85fc843a9d7d 313
walterluu 3:85fc843a9d7d 314 /***************************************************************************
walterluu 3:85fc843a9d7d 315 * Solar Harvester Data Measurement
walterluu 3:85fc843a9d7d 316 **************************************************************************/
walterluu 3:85fc843a9d7d 317 // obtain register hex values
walterluu 5:9e751733a6f3 318 // char AO32ID[2];
walterluu 5:9e751733a6f3 319 // int id_error = AO32_read_register(&i2cBus0, AO32_i2c_add, AO32_DEVICE_ID, AO32ID); // testing
walterluu 5:9e751733a6f3 320 // pc.printf("AO32 add[%02X] data[%02X]\r\n", AO32_DEVICE_ID, AO32ID[0]); // should be 0x00: 0x11
walterluu 3:85fc843a9d7d 321
walterluu 3:85fc843a9d7d 322 int ocv_error = AO32_read_register(&i2cBus0, AO32_i2c_add, AO32_VOC, rawOCVdata);
walterluu 5:9e751733a6f3 323 // pc.printf("AO32 add[%02X] data[%02X]\r\n", AO32_VOC, rawOCVdata[0]);
walterluu 3:85fc843a9d7d 324 int cnt_error = AO32_read_register(&i2cBus0, AO32_i2c_add, AO32_HARV_H, rawCntdata, 2); // burst read 2 bytes
walterluu 5:9e751733a6f3 325 // pc.printf("AO32 hi_add[%02X] hi_data[%02X] lo_add[%02X] lo_data[%02X]\r\n", AO32_HARV_H, rawCntdata[0], AO32_HARV_L, rawCntdata[1]);
walterluu 3:85fc843a9d7d 326
walterluu 3:85fc843a9d7d 327 //calculate open circuit voltage from data
walterluu 5:9e751733a6f3 328 double voltage = (double)(rawOCVdata[0]) / 100;
walterluu 3:85fc843a9d7d 329 pc.printf("AO32 OCV[%.2f] status[%d]\r\n", voltage, ocv_error);
walterluu 5:9e751733a6f3 330 double OCVFinal = calc_OCV(rawOCVdata);
walterluu 5:9e751733a6f3 331 pc.printf("AO32 Final OCV[%.2f] \r\n", OCVFinal);
walterluu 5:9e751733a6f3 332 pc.printf("\r\n");
walterluu 3:85fc843a9d7d 333
walterluu 3:85fc843a9d7d 334 //calculate harvesting counts from data
walterluu 5:9e751733a6f3 335 int countHi = int(rawCntdata[0]) * 256;
walterluu 3:85fc843a9d7d 336 int countLo = int(rawCntdata[1]);
walterluu 3:85fc843a9d7d 337 int harvest_counts = countHi + countLo;
walterluu 3:85fc843a9d7d 338 pc.printf("AO32 HarvesterCnt[%d] status[%d]\r\n", harvest_counts, cnt_error);
walterluu 5:9e751733a6f3 339 int countFinal = calc_Harvest(rawCntdata);
walterluu 5:9e751733a6f3 340 pc.printf("AO32 Final HarvesterCnt[%d]\r\n", countFinal);
walterluu 5:9e751733a6f3 341 pc.printf("\r\n");
walterluu 5:9e751733a6f3 342
walterluu 3:85fc843a9d7d 343
walterluu 3:85fc843a9d7d 344 //fill raw AO32 data into the array
walterluu 5:9e751733a6f3 345 curr_raw_AO32_to_master[0] = rawOCVdata[0]; // Fill OCV hex first
walterluu 5:9e751733a6f3 346 curr_raw_AO32_to_master[1] = rawCntdata[0]; // Fill Harvesting count high byte
walterluu 5:9e751733a6f3 347 curr_raw_AO32_to_master[2] = rawCntdata[1]; // Fill Harvesting count low byte
walterluu 0:664d9df11a00 348
walterluu 3:85fc843a9d7d 349 /***************************************************************************
walterluu 3:85fc843a9d7d 350 * Fill Payload Buffer With Data From Main Program Buffers for next LoRa Transmition
walterluu 3:85fc843a9d7d 351 **************************************************************************/
walterluu 3:85fc843a9d7d 352 memcpy(&BufferTx[tx_idx_signature], PongMsg, size_signature);
walterluu 3:85fc843a9d7d 353 memcpy(&BufferTx[tx_idx_MAX30208], curr_raw_temp_to_master, size_of_MAX30208);
walterluu 3:85fc843a9d7d 354 memcpy(&BufferTx[tx_idx_MAX44009], curr_raw_light_to_master, size_of_MAX44009);
walterluu 3:85fc843a9d7d 355 memcpy(&BufferTx[tx_idx_MAX20361], curr_raw_AO32_to_master, size_of_MAX20361);
walterluu 3:85fc843a9d7d 356 // memcpy(&BufferTx[tx_idx_other], curr_raw_other_to_master, size_of_other);
walterluu 3:85fc843a9d7d 357
walterluu 3:85fc843a9d7d 358 /***************************************************************************
walterluu 3:85fc843a9d7d 359 * In case of OnRxTimeout
walterluu 3:85fc843a9d7d 360 **************************************************************************/
walterluu 3:85fc843a9d7d 361 // Slave Device, these are values when LoRa communication did not happen
walterluu 3:85fc843a9d7d 362 // ID_of_master[0] = 'N'; // 0x4E or 78
walterluu 3:85fc843a9d7d 363 // ID_of_master[1] = 'A'; // 0x41 or 65
walterluu 3:85fc843a9d7d 364 // ID_of_master[2] = 'C'; // 0x43 or 67
walterluu 3:85fc843a9d7d 365 // ID_of_master[3] = 'K'; // 0x4B or 75
walterluu 3:85fc843a9d7d 366 // ID_of_master[4] = 'M'; // 0x4D or 77
walterluu 3:85fc843a9d7d 367 // ID_of_master[5] = 'A'; // 0x41 or 65
walterluu 3:85fc843a9d7d 368 // ID_of_master[6] = 'S'; // 0x53 or 83
walterluu 3:85fc843a9d7d 369 // ID_of_master[7] = '!'; // 0x21 or 33
walterluu 3:85fc843a9d7d 370 //
walterluu 3:85fc843a9d7d 371 // curr_dum_from_master[0] = 39;
walterluu 3:85fc843a9d7d 372 // curr_dum_from_master[1] = 40;
walterluu 3:85fc843a9d7d 373
walterluu 3:85fc843a9d7d 374 /***************************************************************************
walterluu 3:85fc843a9d7d 375 * LoRa Communication: Send Sensor Data
walterluu 3:85fc843a9d7d 376 **************************************************************************/
walterluu 3:85fc843a9d7d 377 // SX1276SensorSend();
walterluu 3:85fc843a9d7d 378 SX1276PingPong();
walterluu 3:85fc843a9d7d 379 int sendTime = TimeOnAirSend();
walterluu 3:85fc843a9d7d 380 pc.printf("Tx Time on Air: %d \r\n", sendTime);
walterluu 3:85fc843a9d7d 381
walterluu 3:85fc843a9d7d 382 /***************************************************************************
walterluu 3:85fc843a9d7d 383 * Fill Main Program Buffers With Data From Received Payload Buffer
walterluu 3:85fc843a9d7d 384 **************************************************************************/
walterluu 3:85fc843a9d7d 385 // Slave Device
walterluu 3:85fc843a9d7d 386 memcpy(ID_of_master, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 387 memcpy(curr_dum_from_master, &BufferRx[rx_idx_dum], size_of_dum);
walterluu 3:85fc843a9d7d 388
walterluu 3:85fc843a9d7d 389 /***************************************************************************
walterluu 3:85fc843a9d7d 390 * Slave Device: Print out Master Data
walterluu 3:85fc843a9d7d 391 **************************************************************************/
walterluu 3:85fc843a9d7d 392 // memcpy(ID_of_master, &BufferRx[rx_idx_signature], size_signature);
walterluu 5:9e751733a6f3 393 // pc.printf("Print ID_of_master\r\n");
walterluu 5:9e751733a6f3 394 // for(int i = 0; i < sizeof(ID_of_master); i++){
walterluu 5:9e751733a6f3 395 // pc.printf("%d \r\n", ID_of_master[i]);
walterluu 5:9e751733a6f3 396 // }
walterluu 3:85fc843a9d7d 397
walterluu 3:85fc843a9d7d 398 // memcpy(curr_dum_from_master, &BufferRx[rx_idx_dum], size_of_dum);
walterluu 3:85fc843a9d7d 399 // pc.printf("Print Dum From Master\r\n");
walterluu 3:85fc843a9d7d 400 // for(int i = 0; i < sizeof(curr_dum_from_master); i++){
walterluu 3:85fc843a9d7d 401 // pc.printf("%d \r\n", curr_dum_from_master[i]);
walterluu 3:85fc843a9d7d 402 // }
walterluu 3:85fc843a9d7d 403
walterluu 3:85fc843a9d7d 404 // print loop counter
walterluu 3:85fc843a9d7d 405 pc.printf("Loop Counter Slave: %d \r\n", loopCnt);
walterluu 3:85fc843a9d7d 406 loopCnt = loopCnt + 1;
walterluu 3:85fc843a9d7d 407 } // end of transmission frequency for slave
walterluu 3:85fc843a9d7d 408 #endif
walterluu 3:85fc843a9d7d 409
walterluu 3:85fc843a9d7d 410
walterluu 3:85fc843a9d7d 411 #if MASTER == 1
walterluu 3:85fc843a9d7d 412 /***************************************************************************
walterluu 3:85fc843a9d7d 413 * Fill Payload Buffer With Data From Main Program Buffers for next LoRa Transmition
walterluu 3:85fc843a9d7d 414 **************************************************************************/
walterluu 3:85fc843a9d7d 415 memcpy(&BufferTx[tx_idx_signature], PingMsg, size_signature);
walterluu 3:85fc843a9d7d 416 memcpy(&BufferTx[tx_idx_dum], curr_dum_to_slave, size_of_dum);
walterluu 3:85fc843a9d7d 417
walterluu 3:85fc843a9d7d 418 /***************************************************************************
walterluu 3:85fc843a9d7d 419 * LoRa Communication: Gateway Receive Sensor Data
walterluu 3:85fc843a9d7d 420 **************************************************************************/
walterluu 3:85fc843a9d7d 421 // SX1276GateWayReceive(333);
walterluu 3:85fc843a9d7d 422 SX1276PingPong();
walterluu 3:85fc843a9d7d 423 int sendTime = TimeOnAirSend();
walterluu 5:9e751733a6f3 424 // pc.printf("Tx Time on Air: %d \r\n", sendTime);
walterluu 3:85fc843a9d7d 425
walterluu 3:85fc843a9d7d 426 /***************************************************************************
walterluu 3:85fc843a9d7d 427 * Fill Main Program Buffers With Data From Received Payload Buffer
walterluu 3:85fc843a9d7d 428 **************************************************************************/
walterluu 3:85fc843a9d7d 429 memcpy(ID_of_slave, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 430 memcpy(curr_raw_temp_from_slave, &BufferRx[rx_idx_MAX30208], size_of_MAX30208);
walterluu 3:85fc843a9d7d 431 memcpy(curr_raw_light_from_slave, &BufferRx[rx_idx_MAX44009], size_of_MAX44009);
walterluu 3:85fc843a9d7d 432 memcpy(curr_raw_AO32_from_slave, &BufferRx[rx_idx_MAX20361], size_of_MAX20361);
walterluu 3:85fc843a9d7d 433 // memcpy(curr_raw_other_from_slave, &BufferRx[rx_idx_other], size_of_other);
walterluu 3:85fc843a9d7d 434
walterluu 3:85fc843a9d7d 435 /***************************************************************************
walterluu 3:85fc843a9d7d 436 * Master Device: Print out Slave Data
walterluu 3:85fc843a9d7d 437 **************************************************************************/
walterluu 3:85fc843a9d7d 438
walterluu 3:85fc843a9d7d 439 // memcpy(ID_of_slave, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 440 //pc.printf("Print ID_of_slave\r\n");
walterluu 3:85fc843a9d7d 441 // for(int i = 0; i < sizeof(ID_of_slave); i++){
walterluu 3:85fc843a9d7d 442 // pc.printf("%d \r\n", ID_of_slave[i]);
walterluu 3:85fc843a9d7d 443 // }
walterluu 3:85fc843a9d7d 444
walterluu 3:85fc843a9d7d 445 // memcpy(curr_raw_temp_from_slave, &BufferRx[rx_idx_MAX30208], size_of_MAX30208);
walterluu 5:9e751733a6f3 446 // pc.printf("Print MAX30208 data\r\n");
walterluu 5:9e751733a6f3 447 // for(int i = 0; i < sizeof(curr_raw_temp_from_slave); i++){
walterluu 5:9e751733a6f3 448 // pc.printf("[%02X]\r\n", curr_raw_temp_from_slave[i]);
walterluu 5:9e751733a6f3 449 // }
walterluu 3:85fc843a9d7d 450
walterluu 5:9e751733a6f3 451 // int count = curr_raw_temp_from_slave[0] * 256 + curr_raw_temp_from_slave[1];
walterluu 5:9e751733a6f3 452 // if (count >= 32768)count = count - 65536; // 2s comp
walterluu 5:9e751733a6f3 453 // double tempResult = count * 0.005;
walterluu 5:9e751733a6f3 454
walterluu 5:9e751733a6f3 455 double tempResult = calc_temperature(curr_raw_temp_from_slave);
walterluu 5:9e751733a6f3 456 // pc.printf("MSG: [%.3f] [] [] [] []\r\n", tempResult);
walterluu 3:85fc843a9d7d 457
walterluu 3:85fc843a9d7d 458
walterluu 3:85fc843a9d7d 459 // memcpy(curr_raw_light_from_slave, &BufferRx[rx_idx_MAX44009], size_of_MAX44009);
walterluu 5:9e751733a6f3 460 // pc.printf("Print MAX44009 data\r\n");
walterluu 3:85fc843a9d7d 461 // for(int i = 0; i < sizeof(curr_raw_light_from_slave); i++){
walterluu 5:9e751733a6f3 462 // pc.printf("[%02X] \r\n", curr_raw_light_from_slave[i]);
walterluu 3:85fc843a9d7d 463 // }
walterluu 5:9e751733a6f3 464
walterluu 5:9e751733a6f3 465 double luxResult = calc_lux(curr_raw_light_from_slave);
walterluu 5:9e751733a6f3 466 // pc.printf("MSG: [%.3f] [%.2f] [] [] []\r\n", tempResult, luxResult);
walterluu 3:85fc843a9d7d 467
walterluu 3:85fc843a9d7d 468 // memcpy(curr_raw_AO32_from_slave, &BufferRx[rx_idx_MAX20361], size_of_MAX20361);
walterluu 5:9e751733a6f3 469 // pc.printf("Print MAX20361 data\r\n");
walterluu 3:85fc843a9d7d 470 // for(int i = 0; i < sizeof(curr_raw_AO32_from_slave); i++){
walterluu 5:9e751733a6f3 471 // pc.printf("[%02X] \r\n", curr_raw_AO32_from_slave[i]);
walterluu 3:85fc843a9d7d 472 // }
walterluu 5:9e751733a6f3 473
walterluu 5:9e751733a6f3 474 char OCVrawHex[2];
walterluu 5:9e751733a6f3 475 OCVrawHex[0] = curr_raw_AO32_from_slave[0];
walterluu 5:9e751733a6f3 476 OCVrawHex[1] = curr_raw_AO32_from_slave[1];
walterluu 5:9e751733a6f3 477 char CntrawHex[2];
walterluu 5:9e751733a6f3 478 CntrawHex[0] = curr_raw_AO32_from_slave[2];
walterluu 5:9e751733a6f3 479 CntrawHex[1] = curr_raw_AO32_from_slave[3];
walterluu 5:9e751733a6f3 480
walterluu 5:9e751733a6f3 481 double OCVResult = calc_OCV(OCVrawHex);
walterluu 5:9e751733a6f3 482 int CntResult = calc_Harvest(CntrawHex);
walterluu 5:9e751733a6f3 483 pc.printf("MSG: [%.3f] [%.2f] [%.2f] [%d] []\r\n", tempResult, luxResult, OCVResult, CntResult);
walterluu 3:85fc843a9d7d 484
walterluu 3:85fc843a9d7d 485 // memcpy(curr_raw_other_from_slave, &BufferRx[rx_idx_other], size_of_other);
walterluu 3:85fc843a9d7d 486 //pc.printf("Print Other data\r\n");
walterluu 3:85fc843a9d7d 487 // for(int i = 0; i < sizeof(curr_raw_other_from_slave); i++){
walterluu 3:85fc843a9d7d 488 // pc.printf("%d \r\n", curr_raw_other_from_slave[i]);
walterluu 3:85fc843a9d7d 489 // }
walterluu 3:85fc843a9d7d 490
walterluu 3:85fc843a9d7d 491 // print loop counter
walterluu 5:9e751733a6f3 492 // pc.printf("Loop Counter Master: %d \r\n", loopCnt);
walterluu 3:85fc843a9d7d 493 loopCnt = loopCnt + 1;
walterluu 3:85fc843a9d7d 494
walterluu 3:85fc843a9d7d 495 // wait(3);
walterluu 3:85fc843a9d7d 496
walterluu 3:85fc843a9d7d 497 #endif
walterluu 3:85fc843a9d7d 498
walterluu 3:85fc843a9d7d 499 ///***************************************************************************
walterluu 3:85fc843a9d7d 500 // * Fill Payload Buffer With Data From Main Program Buffers for next LoRa Transmition
walterluu 3:85fc843a9d7d 501 // **************************************************************************/
walterluu 3:85fc843a9d7d 502 // #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 503 // memcpy(&BufferTx[tx_idx_signature], PingMsg, size_signature);
walterluu 3:85fc843a9d7d 504 // memcpy(&BufferTx[tx_idx_dum], curr_dum_to_slave, size_of_dum);
walterluu 3:85fc843a9d7d 505 // #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 506 // memcpy(&BufferTx[tx_idx_signature], PongMsg, size_signature);
walterluu 3:85fc843a9d7d 507 // memcpy(&BufferTx[tx_idx_MAX30208], curr_raw_temp_to_master, size_of_MAX30208);
walterluu 3:85fc843a9d7d 508 // memcpy(&BufferTx[tx_idx_MAX44009], curr_raw_light_to_master, size_of_MAX44009);
walterluu 3:85fc843a9d7d 509 // memcpy(&BufferTx[tx_idx_MAX20361], curr_raw_AO32_to_master, size_of_MAX20361);
walterluu 3:85fc843a9d7d 510 // memcpy(&BufferTx[tx_idx_other], curr_raw_other_to_master, size_of_other);
walterluu 3:85fc843a9d7d 511 // #endif
walterluu 3:85fc843a9d7d 512 //
walterluu 3:85fc843a9d7d 513 // /***************************************************************************
walterluu 3:85fc843a9d7d 514 // * In case of OnRxTimeout
walterluu 3:85fc843a9d7d 515 // **************************************************************************/
walterluu 3:85fc843a9d7d 516 // #if MASTER == 1 // Master Device, these are values when LoRa communication did not happen
walterluu 3:85fc843a9d7d 517 // ID_of_slave[0] = 10; //
walterluu 3:85fc843a9d7d 518 // ID_of_slave[1] = 11; //
walterluu 3:85fc843a9d7d 519 // ID_of_slave[2] = 12; //
walterluu 3:85fc843a9d7d 520 // ID_of_slave[3] = 13; //
walterluu 3:85fc843a9d7d 521 // ID_of_slave[4] = 14; //
walterluu 3:85fc843a9d7d 522 // ID_of_slave[5] = 15; //
walterluu 3:85fc843a9d7d 523 // ID_of_slave[6] = 16; //
walterluu 3:85fc843a9d7d 524 // ID_of_slave[7] = 17; //
walterluu 3:85fc843a9d7d 525 //
walterluu 3:85fc843a9d7d 526 // #elif SLAVE == 1 // Slave Device, these are values when LoRa communication did not happen
walterluu 3:85fc843a9d7d 527 // ID_of_master[0] = 'N'; // 0x4E or 78
walterluu 3:85fc843a9d7d 528 // ID_of_master[1] = 'A'; // 0x41 or 65
walterluu 3:85fc843a9d7d 529 // ID_of_master[2] = 'C'; // 0x43 or 67
walterluu 3:85fc843a9d7d 530 // ID_of_master[3] = 'K'; // 0x4B or 75
walterluu 3:85fc843a9d7d 531 // ID_of_master[4] = 'M'; // 0x4D or 77
walterluu 3:85fc843a9d7d 532 // ID_of_master[5] = 'A'; // 0x41 or 65
walterluu 3:85fc843a9d7d 533 // ID_of_master[6] = 'S'; // 0x53 or 83
walterluu 3:85fc843a9d7d 534 // ID_of_master[7] = '!'; // 0x21 or 33
walterluu 3:85fc843a9d7d 535 //
walterluu 3:85fc843a9d7d 536 // curr_dum_from_master[0] = 39;
walterluu 3:85fc843a9d7d 537 // curr_dum_from_master[1] = 40;
walterluu 3:85fc843a9d7d 538 //
walterluu 3:85fc843a9d7d 539 // #endif
walterluu 3:85fc843a9d7d 540 //
walterluu 3:85fc843a9d7d 541 //
walterluu 3:85fc843a9d7d 542 // /***************************************************************************
walterluu 3:85fc843a9d7d 543 // * Lora Communications
walterluu 3:85fc843a9d7d 544 // **************************************************************************/
walterluu 3:85fc843a9d7d 545 // #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 546 // SX1276GateWayReceive();
walterluu 3:85fc843a9d7d 547 //
walterluu 3:85fc843a9d7d 548 // #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 549 // SX1276SensorSend();
walterluu 3:85fc843a9d7d 550 // int sendTime = TimeOnAirSend();
walterluu 3:85fc843a9d7d 551 // pc.printf("Tx Time on Air: %d \r\n", sendTime);
walterluu 3:85fc843a9d7d 552 // #endif
walterluu 3:85fc843a9d7d 553 //
walterluu 3:85fc843a9d7d 554 //// SX1276PingPong(); // what changes here?
walterluu 3:85fc843a9d7d 555 //
walterluu 3:85fc843a9d7d 556 //
walterluu 3:85fc843a9d7d 557 // /***************************************************************************
walterluu 3:85fc843a9d7d 558 // * Fill Main Program Buffers With Data From Received Payload Buffer
walterluu 3:85fc843a9d7d 559 // **************************************************************************/
walterluu 3:85fc843a9d7d 560 // /* The master and slave devices will have different requirements for offloading payload */
walterluu 3:85fc843a9d7d 561 // #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 562 // memcpy(ID_of_slave, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 563 // memcpy(curr_raw_temp_from_slave, &BufferRx[rx_idx_MAX30208], size_of_MAX30208);
walterluu 3:85fc843a9d7d 564 // memcpy(curr_raw_light_from_slave, &BufferRx[rx_idx_MAX44009], size_of_MAX44009);
walterluu 3:85fc843a9d7d 565 // memcpy(curr_raw_AO32_from_slave, &BufferRx[rx_idx_MAX20361], size_of_MAX20361);
walterluu 3:85fc843a9d7d 566 // memcpy(curr_raw_other_from_slave, &BufferRx[rx_idx_other], size_of_other);
walterluu 3:85fc843a9d7d 567 // #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 568 // memcpy(ID_of_master, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 569 // memcpy(curr_dum_from_master, &BufferRx[rx_idx_dum], size_of_dum);
walterluu 3:85fc843a9d7d 570 // #endif
walterluu 3:85fc843a9d7d 571 //
walterluu 3:85fc843a9d7d 572 //
walterluu 3:85fc843a9d7d 573 // /***************************************************************************
walterluu 3:85fc843a9d7d 574 // * Print Out Data Received
walterluu 3:85fc843a9d7d 575 // **************************************************************************/
walterluu 3:85fc843a9d7d 576 // #if MASTER == 1 // Master Device
walterluu 3:85fc843a9d7d 577 //
walterluu 3:85fc843a9d7d 578 //// memcpy(ID_of_slave, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 579 // pc.printf("Print ID_of_slave\r\n");
walterluu 3:85fc843a9d7d 580 // for(int i = 0; i < sizeof(ID_of_slave); i++){
walterluu 3:85fc843a9d7d 581 // pc.printf("%d \r\n", ID_of_slave[i]);
walterluu 3:85fc843a9d7d 582 // }
walterluu 3:85fc843a9d7d 583 //
walterluu 3:85fc843a9d7d 584 //// memcpy(curr_raw_temp_from_slave, &BufferRx[rx_idx_MAX30208], size_of_MAX30208);
walterluu 3:85fc843a9d7d 585 // pc.printf("Print MAX30208 data\r\n");
walterluu 3:85fc843a9d7d 586 // for(int i = 0; i < sizeof(curr_raw_temp_from_slave); i++){
walterluu 3:85fc843a9d7d 587 // pc.printf("%d \r\n", curr_raw_temp_from_slave[i]);
walterluu 3:85fc843a9d7d 588 // }
walterluu 3:85fc843a9d7d 589 //
walterluu 3:85fc843a9d7d 590 //// memcpy(curr_raw_light_from_slave, &BufferRx[rx_idx_MAX44009], size_of_MAX44009);
walterluu 3:85fc843a9d7d 591 // pc.printf("Print MAX44009 data\r\n");
walterluu 3:85fc843a9d7d 592 // for(int i = 0; i < sizeof(curr_raw_light_from_slave); i++){
walterluu 3:85fc843a9d7d 593 // pc.printf("%d \r\n", curr_raw_light_from_slave[i]);
walterluu 3:85fc843a9d7d 594 // }
walterluu 3:85fc843a9d7d 595 //
walterluu 3:85fc843a9d7d 596 //// memcpy(curr_raw_AO32_from_slave, &BufferRx[rx_idx_MAX20361], size_of_MAX20361);
walterluu 3:85fc843a9d7d 597 // pc.printf("Print MAX20361 data\r\n");
walterluu 3:85fc843a9d7d 598 // for(int i = 0; i < sizeof(curr_raw_AO32_from_slave); i++){
walterluu 3:85fc843a9d7d 599 // pc.printf("%d \r\n", curr_raw_AO32_from_slave[i]);
walterluu 3:85fc843a9d7d 600 // }
walterluu 3:85fc843a9d7d 601 //
walterluu 3:85fc843a9d7d 602 //// memcpy(curr_raw_other_from_slave, &BufferRx[rx_idx_other], size_of_other);
walterluu 3:85fc843a9d7d 603 // pc.printf("Print Other data\r\n");
walterluu 3:85fc843a9d7d 604 // for(int i = 0; i < sizeof(curr_raw_other_from_slave); i++){
walterluu 3:85fc843a9d7d 605 // pc.printf("%d \r\n", curr_raw_other_from_slave[i]);
walterluu 3:85fc843a9d7d 606 // }
walterluu 3:85fc843a9d7d 607 //
walterluu 3:85fc843a9d7d 608 // // print loop counter
walterluu 3:85fc843a9d7d 609 // pc.printf("Loop Counter Master: %d \r\n", loopCnt);
walterluu 3:85fc843a9d7d 610 // loopCnt = loopCnt + 1;
walterluu 3:85fc843a9d7d 611 //
walterluu 3:85fc843a9d7d 612 // #elif SLAVE == 1 // Slave Device
walterluu 3:85fc843a9d7d 613 //// memcpy(ID_of_master, &BufferRx[rx_idx_signature], size_signature);
walterluu 3:85fc843a9d7d 614 // pc.printf("Print ID_of_master\r\n");
walterluu 3:85fc843a9d7d 615 // for(int i = 0; i < sizeof(ID_of_master); i++){
walterluu 3:85fc843a9d7d 616 // pc.printf("%d \r\n", ID_of_master[i]);
walterluu 3:85fc843a9d7d 617 // }
walterluu 3:85fc843a9d7d 618 //
walterluu 3:85fc843a9d7d 619 //// memcpy(curr_dum_from_master, &BufferRx[rx_idx_dum], size_of_dum);
walterluu 3:85fc843a9d7d 620 // pc.printf("Print Dum From Master\r\n");
walterluu 3:85fc843a9d7d 621 // for(int i = 0; i < sizeof(curr_dum_from_master); i++){
walterluu 3:85fc843a9d7d 622 // pc.printf("%d \r\n", curr_dum_from_master[i]);
walterluu 3:85fc843a9d7d 623 // }
walterluu 3:85fc843a9d7d 624 //
walterluu 3:85fc843a9d7d 625 // // print loop counter
walterluu 3:85fc843a9d7d 626 // pc.printf("Loop Counter Slave: %d \r\n", loopCnt);
walterluu 3:85fc843a9d7d 627 // loopCnt = loopCnt + 1;
walterluu 3:85fc843a9d7d 628 // #endif
walterluu 3:85fc843a9d7d 629
walterluu 3:85fc843a9d7d 630 // add delay to slow down
walterluu 3:85fc843a9d7d 631 // wait(1);
walterluu 3:85fc843a9d7d 632
walterluu 3:85fc843a9d7d 633
walterluu 3:85fc843a9d7d 634 // } //end of get_data_flag
walterluu 3:85fc843a9d7d 635
walterluu 3:85fc843a9d7d 636 } // end of while(1) loop
walterluu 3:85fc843a9d7d 637
walterluu 3:85fc843a9d7d 638 } // end of main()
walterluu 0:664d9df11a00 639