Romain Ardino / Mbed OS ProjetER4

Dependencies:   Servo pourtibo driver_mbed_TH02

Committer:
paparoms
Date:
Tue Mar 08 11:01:51 2022 +0000
Revision:
64:b57da430b53c
Parent:
63:cd8ab5860303
dd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:7037ed05f54f 1 /**
mbed_official 0:7037ed05f54f 2 * Copyright (c) 2017, Arm Limited and affiliates.
mbed_official 0:7037ed05f54f 3 * SPDX-License-Identifier: Apache-2.0
mbed_official 0:7037ed05f54f 4 *
mbed_official 0:7037ed05f54f 5 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 0:7037ed05f54f 6 * you may not use this file except in compliance with the License.
mbed_official 0:7037ed05f54f 7 * You may obtain a copy of the License at
mbed_official 0:7037ed05f54f 8 *
mbed_official 0:7037ed05f54f 9 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 0:7037ed05f54f 10 *
mbed_official 0:7037ed05f54f 11 * Unless required by applicable law or agreed to in writing, software
mbed_official 0:7037ed05f54f 12 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 0:7037ed05f54f 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 0:7037ed05f54f 14 * See the License for the specific language governing permissions and
mbed_official 0:7037ed05f54f 15 * limitations under the License.
mbed_official 0:7037ed05f54f 16 */
mbed_official 0:7037ed05f54f 17 #include <stdio.h>
superphil06 58:81c66fac6476 18 #include "th02.h"
superphil06 57:5ec0379d69d6 19 #include "CayenneLPP.h"
mbed_official 0:7037ed05f54f 20 #include "lorawan/LoRaWANInterface.h"
mbed_official 0:7037ed05f54f 21 #include "lorawan/system/lorawan_data_structures.h"
mbed_official 0:7037ed05f54f 22 #include "events/EventQueue.h"
paparoms 64:b57da430b53c 23 #include "driver_mbed_TH02.h"
paparoms 64:b57da430b53c 24 #include "GroveGPS.h"
paparoms 64:b57da430b53c 25 #include "MFRC522.h"
paparoms 64:b57da430b53c 26
paparoms 64:b57da430b53c 27 #define SLEEP_TIME 500 // (msec)
paparoms 64:b57da430b53c 28 #define PRINT_AFTER_N_LOOPS 20
paparoms 64:b57da430b53c 29
paparoms 64:b57da430b53c 30 // K64F Pin for "MFRC522 (Chip select, Clock, MOSI, MISO, IRQ, Ground, Reset, 3.3V)"
paparoms 64:b57da430b53c 31 #define MF_RESET PB_12 //Reset
paparoms 64:b57da430b53c 32 #define SPI_MOSI PB_15 //MOSI
paparoms 64:b57da430b53c 33 #define SPI_MISO PB_14 //MISO
paparoms 64:b57da430b53c 34 #define SPI_SCK PB_13 //Clock
paparoms 64:b57da430b53c 35 #define SPI_CS PA_8 //Chip Select
paparoms 64:b57da430b53c 36
mbed_official 0:7037ed05f54f 37
mbed_official 0:7037ed05f54f 38 // Application helpers
mbed_official 0:7037ed05f54f 39 #include "DummySensor.h"
mbed_official 0:7037ed05f54f 40 #include "trace_helper.h"
mbed_official 0:7037ed05f54f 41 #include "lora_radio_helper.h"
superphil06 58:81c66fac6476 42 #include "Servo.h"
mbed_official 0:7037ed05f54f 43
mbed_official 0:7037ed05f54f 44 using namespace events;
mbed_official 0:7037ed05f54f 45
mbed_official 12:5015dfead3f2 46 // Max payload size can be LORAMAC_PHY_MAXPAYLOAD.
mbed_official 12:5015dfead3f2 47 // This example only communicates with much shorter messages (<30 bytes).
mbed_official 12:5015dfead3f2 48 // If longer messages are used, these buffers must be changed accordingly.
mbed_official 12:5015dfead3f2 49 uint8_t tx_buffer[30];
mbed_official 12:5015dfead3f2 50 uint8_t rx_buffer[30];
mbed_official 0:7037ed05f54f 51
superphil06 57:5ec0379d69d6 52 #define MAX_SIZE 200 // depends on spreading factor and frequency used
superphil06 57:5ec0379d69d6 53
superphil06 57:5ec0379d69d6 54 CayenneLPP Payload(MAX_SIZE);
superphil06 57:5ec0379d69d6 55
paparoms 64:b57da430b53c 56 float celsius;
superphil06 57:5ec0379d69d6 57 float accel[] = {1.234, -1.234, 0};
superphil06 57:5ec0379d69d6 58 float rh = 30;
superphil06 57:5ec0379d69d6 59 float hpa = 1014.1;
paparoms 64:b57da430b53c 60 float latitude ;
paparoms 64:b57da430b53c 61 float longitude ;
paparoms 64:b57da430b53c 62 float altitude;
paparoms 64:b57da430b53c 63 int size = 0;
superphil06 57:5ec0379d69d6 64
paparoms 64:b57da430b53c 65 DigitalOut LedGreen(LED1);
paparoms 64:b57da430b53c 66 Serial pc(USBTX, USBRX);
paparoms 64:b57da430b53c 67 MFRC522 RfChip (SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, MF_RESET);
superphil06 57:5ec0379d69d6 68
superphil06 57:5ec0379d69d6 69
superphil06 58:81c66fac6476 70 DigitalOut Alarme (PC_13);// alarme LED output
superphil06 58:81c66fac6476 71 Servo Myservo(PA_7); //servomotor output
superphil06 58:81c66fac6476 72 TH02 MyTH02 (I2C_SDA,I2C_SCL,TH02_I2C_ADDR<<1);// connect hsensor on RX2 TX2
paparoms 64:b57da430b53c 73 //GroveGPS gps(D8,D2);
paparoms 64:b57da430b53c 74 GroveGPS gps(PA_9,PA_10); //Connect GPS
mbed_official 0:7037ed05f54f 75 /*
mbed_official 0:7037ed05f54f 76 * Sets up an application dependent transmission timer in ms. Used only when Duty Cycling is off for testing
mbed_official 0:7037ed05f54f 77 */
superphil06 59:7b58c5775a56 78 #define TX_TIMER 20000
mbed_official 0:7037ed05f54f 79
mbed_official 0:7037ed05f54f 80 /**
mbed_official 0:7037ed05f54f 81 * Maximum number of events for the event queue.
mbed_official 12:5015dfead3f2 82 * 10 is the safe number for the stack events, however, if application
mbed_official 0:7037ed05f54f 83 * also uses the queue for whatever purposes, this number should be increased.
mbed_official 0:7037ed05f54f 84 */
superphil06 59:7b58c5775a56 85 #define MAX_NUMBER_OF_EVENTS 30
mbed_official 0:7037ed05f54f 86
mbed_official 0:7037ed05f54f 87 /**
mbed_official 0:7037ed05f54f 88 * Maximum number of retries for CONFIRMED messages before giving up
mbed_official 0:7037ed05f54f 89 */
mbed_official 0:7037ed05f54f 90 #define CONFIRMED_MSG_RETRY_COUNTER 3
mbed_official 0:7037ed05f54f 91
mbed_official 0:7037ed05f54f 92 /**
mbed_official 0:7037ed05f54f 93 * Dummy pin for dummy sensor
mbed_official 0:7037ed05f54f 94 */
mbed_official 0:7037ed05f54f 95 #define PC_9 0
mbed_official 0:7037ed05f54f 96
mbed_official 0:7037ed05f54f 97 /**
mbed_official 0:7037ed05f54f 98 * Dummy sensor class object
mbed_official 0:7037ed05f54f 99 */
mbed_official 0:7037ed05f54f 100 DS1820 ds1820(PC_9);
mbed_official 0:7037ed05f54f 101
mbed_official 0:7037ed05f54f 102 /**
mbed_official 0:7037ed05f54f 103 * This event queue is the global event queue for both the
mbed_official 0:7037ed05f54f 104 * application and stack. To conserve memory, the stack is designed to run
mbed_official 0:7037ed05f54f 105 * in the same thread as the application and the application is responsible for
mbed_official 0:7037ed05f54f 106 * providing an event queue to the stack that will be used for ISR deferment as
mbed_official 0:7037ed05f54f 107 * well as application information event queuing.
mbed_official 0:7037ed05f54f 108 */
mbed_official 46:a124538e2891 109 static EventQueue ev_queue(MAX_NUMBER_OF_EVENTS *EVENTS_EVENT_SIZE);
mbed_official 0:7037ed05f54f 110
mbed_official 0:7037ed05f54f 111 /**
mbed_official 0:7037ed05f54f 112 * Event handler.
mbed_official 0:7037ed05f54f 113 *
mbed_official 0:7037ed05f54f 114 * This will be passed to the LoRaWAN stack to queue events for the
mbed_official 0:7037ed05f54f 115 * application which in turn drive the application.
mbed_official 0:7037ed05f54f 116 */
mbed_official 0:7037ed05f54f 117 static void lora_event_handler(lorawan_event_t event);
mbed_official 0:7037ed05f54f 118
mbed_official 0:7037ed05f54f 119 /**
mbed_official 46:a124538e2891 120 * Constructing Mbed LoRaWANInterface and passing it the radio object from lora_radio_helper.
mbed_official 0:7037ed05f54f 121 */
mbed_official 2:dc95ac6d6d4e 122 static LoRaWANInterface lorawan(radio);
mbed_official 0:7037ed05f54f 123
mbed_official 0:7037ed05f54f 124 /**
mbed_official 0:7037ed05f54f 125 * Application specific callbacks
mbed_official 0:7037ed05f54f 126 */
mbed_official 0:7037ed05f54f 127 static lorawan_app_callbacks_t callbacks;
mbed_official 0:7037ed05f54f 128
superphil06 58:81c66fac6476 129 void servo(uint8_t uAngle)
superphil06 58:81c66fac6476 130 {
superphil06 58:81c66fac6476 131
superphil06 58:81c66fac6476 132 }
superphil06 58:81c66fac6476 133
superphil06 58:81c66fac6476 134
superphil06 58:81c66fac6476 135
mbed_official 0:7037ed05f54f 136 /**
mbed_official 0:7037ed05f54f 137 * Entry point for application
mbed_official 0:7037ed05f54f 138 */
mbed_official 46:a124538e2891 139 int main(void)
mbed_official 0:7037ed05f54f 140 {
paparoms 64:b57da430b53c 141 pc.baud(115200);
mbed_official 0:7037ed05f54f 142 // setup tracing
mbed_official 0:7037ed05f54f 143 setup_trace();
superphil06 58:81c66fac6476 144 // th02 temerature sensor section
superphil06 58:81c66fac6476 145 int iTemp,iTime,iTempbrute,iRH,iRHbrute;
superphil06 62:10ba6387b44c 146 // Myservo.calibrate(0.0005, 45);
superphil06 58:81c66fac6476 147 printf ("\n\r start reading TH02 for first time");
superphil06 58:81c66fac6476 148 MyTH02.startTempConv(true,true);
superphil06 58:81c66fac6476 149
paparoms 64:b57da430b53c 150
paparoms 64:b57da430b53c 151 RfChip.PCD_Init(); /* Init. RC522 Chip*/
mbed_official 0:7037ed05f54f 152
mbed_official 0:7037ed05f54f 153 // stores the status of a call to LoRaWAN protocol
mbed_official 0:7037ed05f54f 154 lorawan_status_t retcode;
mbed_official 0:7037ed05f54f 155
mbed_official 0:7037ed05f54f 156 // Initialize LoRaWAN stack
mbed_official 2:dc95ac6d6d4e 157 if (lorawan.initialize(&ev_queue) != LORAWAN_STATUS_OK) {
mbed_official 0:7037ed05f54f 158 printf("\r\n LoRa initialization failed! \r\n");
mbed_official 0:7037ed05f54f 159 return -1;
mbed_official 0:7037ed05f54f 160 }
mbed_official 0:7037ed05f54f 161
mbed_official 0:7037ed05f54f 162 printf("\r\n Mbed LoRaWANStack initialized \r\n");
mbed_official 0:7037ed05f54f 163
mbed_official 0:7037ed05f54f 164 // prepare application callbacks
mbed_official 0:7037ed05f54f 165 callbacks.events = mbed::callback(lora_event_handler);
mbed_official 2:dc95ac6d6d4e 166 lorawan.add_app_callbacks(&callbacks);
mbed_official 0:7037ed05f54f 167
mbed_official 0:7037ed05f54f 168 // Set number of retries in case of CONFIRMED messages
mbed_official 2:dc95ac6d6d4e 169 if (lorawan.set_confirmed_msg_retries(CONFIRMED_MSG_RETRY_COUNTER)
mbed_official 46:a124538e2891 170 != LORAWAN_STATUS_OK) {
mbed_official 0:7037ed05f54f 171 printf("\r\n set_confirmed_msg_retries failed! \r\n\r\n");
mbed_official 0:7037ed05f54f 172 return -1;
mbed_official 0:7037ed05f54f 173 }
mbed_official 0:7037ed05f54f 174
mbed_official 0:7037ed05f54f 175 printf("\r\n CONFIRMED message retries : %d \r\n",
mbed_official 0:7037ed05f54f 176 CONFIRMED_MSG_RETRY_COUNTER);
mbed_official 0:7037ed05f54f 177
mbed_official 0:7037ed05f54f 178 // Enable adaptive data rate
mbed_official 2:dc95ac6d6d4e 179 if (lorawan.enable_adaptive_datarate() != LORAWAN_STATUS_OK) {
mbed_official 0:7037ed05f54f 180 printf("\r\n enable_adaptive_datarate failed! \r\n");
mbed_official 0:7037ed05f54f 181 return -1;
mbed_official 0:7037ed05f54f 182 }
mbed_official 0:7037ed05f54f 183
mbed_official 0:7037ed05f54f 184 printf("\r\n Adaptive data rate (ADR) - Enabled \r\n");
mbed_official 0:7037ed05f54f 185
mbed_official 2:dc95ac6d6d4e 186 retcode = lorawan.connect();
mbed_official 0:7037ed05f54f 187
mbed_official 0:7037ed05f54f 188 if (retcode == LORAWAN_STATUS_OK ||
mbed_official 46:a124538e2891 189 retcode == LORAWAN_STATUS_CONNECT_IN_PROGRESS) {
mbed_official 0:7037ed05f54f 190 } else {
mbed_official 0:7037ed05f54f 191 printf("\r\n Connection error, code = %d \r\n", retcode);
mbed_official 0:7037ed05f54f 192 return -1;
mbed_official 0:7037ed05f54f 193 }
mbed_official 0:7037ed05f54f 194
mbed_official 0:7037ed05f54f 195 printf("\r\n Connection - In Progress ...\r\n");
mbed_official 0:7037ed05f54f 196
mbed_official 0:7037ed05f54f 197 // make your event queue dispatching events forever
mbed_official 0:7037ed05f54f 198 ev_queue.dispatch_forever();
paparoms 64:b57da430b53c 199
paparoms 64:b57da430b53c 200
mbed_official 3:8c7198d1a2a1 201
mbed_official 3:8c7198d1a2a1 202 return 0;
mbed_official 0:7037ed05f54f 203 }
mbed_official 0:7037ed05f54f 204
superphil06 61:3cb7cf8226cf 205 /*************************************************************************************************************
mbed_official 0:7037ed05f54f 206 * Sends a message to the Network Server
superphil06 61:3cb7cf8226cf 207 *************************************************************************************************************/
mbed_official 0:7037ed05f54f 208 static void send_message()
superphil06 62:10ba6387b44c 209 {int iTime,iTempbrute,iRHbrute;
paparoms 64:b57da430b53c 210 float fTemp,fRH,Longi;
superphil06 58:81c66fac6476 211 uint16_t packet_len;
superphil06 58:81c66fac6476 212 int16_t retcode;
superphil06 58:81c66fac6476 213 int32_t sensor_value, rh_value;
paparoms 64:b57da430b53c 214 gps.update();
superphil06 61:3cb7cf8226cf 215 MyTH02.startTempConv(true,true);
superphil06 58:81c66fac6476 216 iTime= MyTH02.waitEndConversion();// wait until onversion is done
paparoms 64:b57da430b53c 217 fTemp= myTH02.ReadTemperature();
paparoms 64:b57da430b53c 218 latitude =gps.gps_gga.latitude;;
paparoms 64:b57da430b53c 219 longitude =gps.gps_gga.longitude;
paparoms 64:b57da430b53c 220 altitude =gps.gps_gga.msl_altitude;
paparoms 64:b57da430b53c 221
superphil06 61:3cb7cf8226cf 222
paparoms 64:b57da430b53c 223
paparoms 64:b57da430b53c 224
paparoms 64:b57da430b53c 225
paparoms 64:b57da430b53c 226
paparoms 64:b57da430b53c 227
paparoms 64:b57da430b53c 228
superphil06 61:3cb7cf8226cf 229 MyTH02.startRHConv(true,true);
superphil06 61:3cb7cf8226cf 230 iTime= MyTH02.waitEndConversion();// wait until onversion is done
paparoms 64:b57da430b53c 231 fRH= myTH02.ReadHumidity();
paparoms 64:b57da430b53c 232
superphil06 61:3cb7cf8226cf 233
superphil06 62:10ba6387b44c 234 printf ("\n\r humidity value= %2.1f",fRH );
paparoms 64:b57da430b53c 235 printf("\n Latitude: %f\n Longitude: %f\n Altitude : %f\n", longitude, latitude ,altitude);
paparoms 64:b57da430b53c 236 printf ("\n\r temp value=%2.1f",fTemp);
paparoms 64:b57da430b53c 237
paparoms 64:b57da430b53c 238 if (RfChip.PICC_IsNewCardPresent())
paparoms 64:b57da430b53c 239 {
paparoms 64:b57da430b53c 240 if (RfChip.PICC_ReadCardSerial())
paparoms 64:b57da430b53c 241 {
paparoms 64:b57da430b53c 242 printf("\r\nReading a card");
paparoms 64:b57da430b53c 243 for (uint8_t i = 0; i < RfChip.uid.size; i++)
paparoms 64:b57da430b53c 244 {
paparoms 64:b57da430b53c 245 printf(" %X02", RfChip.uid.uidByte[i]);
paparoms 64:b57da430b53c 246 }
paparoms 64:b57da430b53c 247 printf("\r\n");
paparoms 64:b57da430b53c 248 }
paparoms 64:b57da430b53c 249 }
paparoms 64:b57da430b53c 250
paparoms 64:b57da430b53c 251
paparoms 64:b57da430b53c 252
paparoms 64:b57da430b53c 253
mbed_official 0:7037ed05f54f 254
superphil06 61:3cb7cf8226cf 255 /*
mbed_official 0:7037ed05f54f 256 if (ds1820.begin()) {
mbed_official 0:7037ed05f54f 257 ds1820.startConversion();
mbed_official 0:7037ed05f54f 258 sensor_value = ds1820.read();
mbed_official 56:39847849d219 259 printf("\r\n Dummy Sensor Value = %d \r\n", sensor_value);
mbed_official 0:7037ed05f54f 260 ds1820.startConversion();
mbed_official 0:7037ed05f54f 261 } else {
mbed_official 0:7037ed05f54f 262 printf("\r\n No sensor found \r\n");
mbed_official 0:7037ed05f54f 263 return;
superphil06 59:7b58c5775a56 264 }
superphil06 61:3cb7cf8226cf 265 */
superphil06 59:7b58c5775a56 266
superphil06 57:5ec0379d69d6 267 Payload.reset();
superphil06 62:10ba6387b44c 268 size = Payload.addTemperature(1, (float) fTemp);
paparoms 64:b57da430b53c 269 size =size+ Payload.addRelativeHumidity(2, fRH);
paparoms 64:b57da430b53c 270 size = size+ Payload.addGPS(3,latitude,longitude,altitude);
paparoms 64:b57da430b53c 271 size = size+ Payload.addNFC(4, (char *) RfChip.uid.uidByte );
paparoms 64:b57da430b53c 272
paparoms 64:b57da430b53c 273
superphil06 58:81c66fac6476 274
superphil06 61:3cb7cf8226cf 275 // send complete message with cayenne format
superphil06 57:5ec0379d69d6 276 retcode = lorawan.send(MBED_CONF_LORA_APP_PORT, Payload.getBuffer(), Payload.getSize(),
superphil06 57:5ec0379d69d6 277 MSG_UNCONFIRMED_FLAG);
mbed_official 0:7037ed05f54f 278
mbed_official 0:7037ed05f54f 279 if (retcode < 0) {
mbed_official 0:7037ed05f54f 280 retcode == LORAWAN_STATUS_WOULD_BLOCK ? printf("send - WOULD BLOCK\r\n")
mbed_official 46:a124538e2891 281 : printf("\r\n send() - Error code %d \r\n", retcode);
mbed_official 26:f07f5febf97f 282
mbed_official 26:f07f5febf97f 283 if (retcode == LORAWAN_STATUS_WOULD_BLOCK) {
mbed_official 26:f07f5febf97f 284 //retry in 3 seconds
mbed_official 26:f07f5febf97f 285 if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
mbed_official 26:f07f5febf97f 286 ev_queue.call_in(3000, send_message);
mbed_official 26:f07f5febf97f 287 }
mbed_official 26:f07f5febf97f 288 }
mbed_official 0:7037ed05f54f 289 return;
mbed_official 0:7037ed05f54f 290 }
mbed_official 0:7037ed05f54f 291
mbed_official 0:7037ed05f54f 292 printf("\r\n %d bytes scheduled for transmission \r\n", retcode);
mbed_official 12:5015dfead3f2 293 memset(tx_buffer, 0, sizeof(tx_buffer));
mbed_official 0:7037ed05f54f 294 }
mbed_official 0:7037ed05f54f 295
mbed_official 0:7037ed05f54f 296 /**
mbed_official 0:7037ed05f54f 297 * Receive a message from the Network Server
mbed_official 0:7037ed05f54f 298 */
mbed_official 0:7037ed05f54f 299 static void receive_message()
superphil06 62:10ba6387b44c 300 {int num_port, iPosition=0,iIndex,iEtatAlarme;
mbed_official 47:b6d132f1079f 301 uint8_t port;
mbed_official 47:b6d132f1079f 302 int flags;
mbed_official 47:b6d132f1079f 303 int16_t retcode = lorawan.receive(rx_buffer, sizeof(rx_buffer), port, flags);
mbed_official 0:7037ed05f54f 304
mbed_official 0:7037ed05f54f 305 if (retcode < 0) {
mbed_official 0:7037ed05f54f 306 printf("\r\n receive() - Error code %d \r\n", retcode);
mbed_official 0:7037ed05f54f 307 return;
mbed_official 0:7037ed05f54f 308 }
mbed_official 0:7037ed05f54f 309
mbed_official 47:b6d132f1079f 310 printf(" RX Data on port %u (%d bytes): ", port, retcode);
mbed_official 0:7037ed05f54f 311 for (uint8_t i = 0; i < retcode; i++) {
superphil06 59:7b58c5775a56 312 printf("%02x", rx_buffer[i]);
mbed_official 0:7037ed05f54f 313 }
superphil06 62:10ba6387b44c 314 // printf("\n test value=%d", port);
superphil06 61:3cb7cf8226cf 315 // *****************************code todo here ********************************************
superphil06 61:3cb7cf8226cf 316 switch (port){
superphil06 61:3cb7cf8226cf 317 case 3: // control led
superphil06 61:3cb7cf8226cf 318 printf("\n led=%d", (int)rx_buffer[0]);
superphil06 62:10ba6387b44c 319 if ((rx_buffer[0]-0x30)==0)
superphil06 62:10ba6387b44c 320
superphil06 62:10ba6387b44c 321 iEtatAlarme=0;
superphil06 62:10ba6387b44c 322 else iEtatAlarme=1;
superphil06 62:10ba6387b44c 323 Alarme.write(iEtatAlarme);
superphil06 62:10ba6387b44c 324
superphil06 62:10ba6387b44c 325 printf("\n alarme=%d",iEtatAlarme);
superphil06 61:3cb7cf8226cf 326 break;
superphil06 61:3cb7cf8226cf 327 case 4:// control servomotor
superphil06 61:3cb7cf8226cf 328 for (iIndex=0;iIndex<retcode;iIndex++)
superphil06 61:3cb7cf8226cf 329 {iPosition=iPosition*10+(rx_buffer[iIndex]-0x30);// convert receive string to angular position
superphil06 61:3cb7cf8226cf 330 }
superphil06 61:3cb7cf8226cf 331
superphil06 61:3cb7cf8226cf 332
superphil06 62:10ba6387b44c 333 printf("\n servo position =%d",iPosition);
superphil06 62:10ba6387b44c 334 Myservo.position ( iPosition-45 ); // set servo motor position from 0 to 180
superphil06 61:3cb7cf8226cf 335 break;
superphil06 61:3cb7cf8226cf 336 default: printf("\n port inconnu =%d",(int)port);
superphil06 61:3cb7cf8226cf 337 break;
superphil06 61:3cb7cf8226cf 338 }
superphil06 61:3cb7cf8226cf 339
superphil06 61:3cb7cf8226cf 340
superphil06 61:3cb7cf8226cf 341 // ***************************** end code todo here *****************************************
superphil06 59:7b58c5775a56 342
superphil06 58:81c66fac6476 343
mbed_official 12:5015dfead3f2 344 memset(rx_buffer, 0, sizeof(rx_buffer));
mbed_official 0:7037ed05f54f 345 }
mbed_official 0:7037ed05f54f 346
mbed_official 0:7037ed05f54f 347 /**
mbed_official 0:7037ed05f54f 348 * Event handler
mbed_official 0:7037ed05f54f 349 */
mbed_official 0:7037ed05f54f 350 static void lora_event_handler(lorawan_event_t event)
mbed_official 0:7037ed05f54f 351 {
mbed_official 0:7037ed05f54f 352 switch (event) {
mbed_official 0:7037ed05f54f 353 case CONNECTED:
mbed_official 0:7037ed05f54f 354 printf("\r\n Connection - Successful \r\n");
mbed_official 0:7037ed05f54f 355 if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
mbed_official 0:7037ed05f54f 356 send_message();
mbed_official 0:7037ed05f54f 357 } else {
mbed_official 0:7037ed05f54f 358 ev_queue.call_every(TX_TIMER, send_message);
mbed_official 0:7037ed05f54f 359 }
mbed_official 0:7037ed05f54f 360
mbed_official 0:7037ed05f54f 361 break;
mbed_official 0:7037ed05f54f 362 case DISCONNECTED:
mbed_official 0:7037ed05f54f 363 ev_queue.break_dispatch();
mbed_official 0:7037ed05f54f 364 printf("\r\n Disconnected Successfully \r\n");
mbed_official 0:7037ed05f54f 365 break;
mbed_official 0:7037ed05f54f 366 case TX_DONE:
mbed_official 0:7037ed05f54f 367 printf("\r\n Message Sent to Network Server \r\n");
mbed_official 0:7037ed05f54f 368 if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
mbed_official 0:7037ed05f54f 369 send_message();
mbed_official 0:7037ed05f54f 370 }
mbed_official 0:7037ed05f54f 371 break;
mbed_official 0:7037ed05f54f 372 case TX_TIMEOUT:
mbed_official 0:7037ed05f54f 373 case TX_ERROR:
mbed_official 0:7037ed05f54f 374 case TX_CRYPTO_ERROR:
mbed_official 0:7037ed05f54f 375 case TX_SCHEDULING_ERROR:
mbed_official 0:7037ed05f54f 376 printf("\r\n Transmission Error - EventCode = %d \r\n", event);
mbed_official 0:7037ed05f54f 377 // try again
mbed_official 0:7037ed05f54f 378 if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
mbed_official 0:7037ed05f54f 379 send_message();
mbed_official 0:7037ed05f54f 380 }
mbed_official 0:7037ed05f54f 381 break;
mbed_official 0:7037ed05f54f 382 case RX_DONE:
mbed_official 0:7037ed05f54f 383 printf("\r\n Received message from Network Server \r\n");
mbed_official 0:7037ed05f54f 384 receive_message();
mbed_official 0:7037ed05f54f 385 break;
mbed_official 0:7037ed05f54f 386 case RX_TIMEOUT:
superphil06 59:7b58c5775a56 387 printf("\r\n timeout in reception - Code = %d \r\n", event);
superphil06 59:7b58c5775a56 388 break;
mbed_official 0:7037ed05f54f 389 case RX_ERROR:
mbed_official 0:7037ed05f54f 390 printf("\r\n Error in reception - Code = %d \r\n", event);
mbed_official 0:7037ed05f54f 391 break;
mbed_official 0:7037ed05f54f 392 case JOIN_FAILURE:
mbed_official 0:7037ed05f54f 393 printf("\r\n OTAA Failed - Check Keys \r\n");
mbed_official 0:7037ed05f54f 394 break;
mbed_official 26:f07f5febf97f 395 case UPLINK_REQUIRED:
mbed_official 26:f07f5febf97f 396 printf("\r\n Uplink required by NS \r\n");
mbed_official 26:f07f5febf97f 397 if (MBED_CONF_LORA_DUTY_CYCLE_ON) {
mbed_official 26:f07f5febf97f 398 send_message();
mbed_official 26:f07f5febf97f 399 }
mbed_official 26:f07f5febf97f 400 break;
mbed_official 0:7037ed05f54f 401 default:
mbed_official 0:7037ed05f54f 402 MBED_ASSERT("Unknown Event");
mbed_official 0:7037ed05f54f 403 }
mbed_official 0:7037ed05f54f 404 }
mbed_official 0:7037ed05f54f 405
mbed_official 0:7037ed05f54f 406 // EOF