Program test for Coragem
Dependencies: SX1272 SPI_MX25R
lora.txt@4:05d5aa4d3f2d, 2019-11-13 (annotated)
- Committer:
- marcoantonioara
- Date:
- Wed Nov 13 16:42:06 2019 +0000
- Revision:
- 4:05d5aa4d3f2d
Test version firmware Coragem using all sensors
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcoantonioara | 4:05d5aa4d3f2d | 1 | #include "SX1272.h" |
marcoantonioara | 4:05d5aa4d3f2d | 2 | |
marcoantonioara | 4:05d5aa4d3f2d | 3 | InterruptIn dio0(P0_12); |
marcoantonioara | 4:05d5aa4d3f2d | 4 | |
marcoantonioara | 4:05d5aa4d3f2d | 5 | //#define BAND868 |
marcoantonioara | 4:05d5aa4d3f2d | 6 | #define MAX_DBM 14 |
marcoantonioara | 4:05d5aa4d3f2d | 7 | #define DATA 0 |
marcoantonioara | 4:05d5aa4d3f2d | 8 | #define PING 1 |
marcoantonioara | 4:05d5aa4d3f2d | 9 | #define PONG 2 |
marcoantonioara | 4:05d5aa4d3f2d | 10 | |
marcoantonioara | 4:05d5aa4d3f2d | 11 | |
marcoantonioara | 4:05d5aa4d3f2d | 12 | #define ADDRESS 10 |
marcoantonioara | 4:05d5aa4d3f2d | 13 | |
marcoantonioara | 4:05d5aa4d3f2d | 14 | const uint32_t DEFAULT_CHANNEL=CH_12_900;//915Mhz CH_12_900 =>0xE4C000; |
marcoantonioara | 4:05d5aa4d3f2d | 15 | |
marcoantonioara | 4:05d5aa4d3f2d | 16 | /////////////////////////////////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 17 | // CHANGE HERE THE LORA MODE, NODE ADDRESS |
marcoantonioara | 4:05d5aa4d3f2d | 18 | #define LORAMODE 1 |
marcoantonioara | 4:05d5aa4d3f2d | 19 | #define node_addr 6 |
marcoantonioara | 4:05d5aa4d3f2d | 20 | ////////////////////////////////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 21 | |
marcoantonioara | 4:05d5aa4d3f2d | 22 | /////////////////////////////////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 23 | // CHANGE HERE THE THINGSPEAK FIELD BETWEEN 1 AND 4 |
marcoantonioara | 4:05d5aa4d3f2d | 24 | #define field_index 1 |
marcoantonioara | 4:05d5aa4d3f2d | 25 | /////////////////////////////////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 26 | #define DEFAULT_DEST_ADDR 6 |
marcoantonioara | 4:05d5aa4d3f2d | 27 | |
marcoantonioara | 4:05d5aa4d3f2d | 28 | |
marcoantonioara | 4:05d5aa4d3f2d | 29 | /////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 30 | // Globals variables |
marcoantonioara | 4:05d5aa4d3f2d | 31 | /////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 32 | |
marcoantonioara | 4:05d5aa4d3f2d | 33 | //___________SX1272____________________ |
marcoantonioara | 4:05d5aa4d3f2d | 34 | int e; |
marcoantonioara | 4:05d5aa4d3f2d | 35 | |
marcoantonioara | 4:05d5aa4d3f2d | 36 | //___________mensagem_____________________ |
marcoantonioara | 4:05d5aa4d3f2d | 37 | uint8_t message[255]; |
marcoantonioara | 4:05d5aa4d3f2d | 38 | uint8_t buffer[255]; |
marcoantonioara | 4:05d5aa4d3f2d | 39 | uint8_t message_pong[]="Pong"; |
marcoantonioara | 4:05d5aa4d3f2d | 40 | uint8_t message_ping[]="Ping"; |
marcoantonioara | 4:05d5aa4d3f2d | 41 | uint8_t r_size; |
marcoantonioara | 4:05d5aa4d3f2d | 42 | uint8_t lora_mode_ant; |
marcoantonioara | 4:05d5aa4d3f2d | 43 | char float_temp[10]; |
marcoantonioara | 4:05d5aa4d3f2d | 44 | char float_press[10]; |
marcoantonioara | 4:05d5aa4d3f2d | 45 | char float_hum[10]; |
marcoantonioara | 4:05d5aa4d3f2d | 46 | int cont =0; |
marcoantonioara | 4:05d5aa4d3f2d | 47 | int loraMode=LORAMODE; |
marcoantonioara | 4:05d5aa4d3f2d | 48 | |
marcoantonioara | 4:05d5aa4d3f2d | 49 | |
marcoantonioara | 4:05d5aa4d3f2d | 50 | //////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 51 | // SETUP SX1272 initialisation |
marcoantonioara | 4:05d5aa4d3f2d | 52 | //////////////////////////////////////// |
marcoantonioara | 4:05d5aa4d3f2d | 53 | void lora_setup() |
marcoantonioara | 4:05d5aa4d3f2d | 54 | { |
marcoantonioara | 4:05d5aa4d3f2d | 55 | |
marcoantonioara | 4:05d5aa4d3f2d | 56 | |
marcoantonioara | 4:05d5aa4d3f2d | 57 | //printf("------Coragem LoRa temperature sensor-------------\n"); |
marcoantonioara | 4:05d5aa4d3f2d | 58 | //sx1272.ON(); // Power ON the module |
marcoantonioara | 4:05d5aa4d3f2d | 59 | |
marcoantonioara | 4:05d5aa4d3f2d | 60 | int error_config_sx1272=0; |
marcoantonioara | 4:05d5aa4d3f2d | 61 | |
marcoantonioara | 4:05d5aa4d3f2d | 62 | // Set transmission mode and print the result |
marcoantonioara | 4:05d5aa4d3f2d | 63 | e = sx1272.setMode(loraMode); |
marcoantonioara | 4:05d5aa4d3f2d | 64 | //printf("Mode: %d\n",loraMode); |
marcoantonioara | 4:05d5aa4d3f2d | 65 | if (e) error_config_sx1272=1; |
marcoantonioara | 4:05d5aa4d3f2d | 66 | //printf("Setting Mode: state %d\n",e); |
marcoantonioara | 4:05d5aa4d3f2d | 67 | |
marcoantonioara | 4:05d5aa4d3f2d | 68 | // enable carrier sense |
marcoantonioara | 4:05d5aa4d3f2d | 69 | sx1272._enableCarrierSense=true; |
marcoantonioara | 4:05d5aa4d3f2d | 70 | |
marcoantonioara | 4:05d5aa4d3f2d | 71 | // for LOW POWER |
marcoantonioara | 4:05d5aa4d3f2d | 72 | sx1272._RSSIonSend=false; |
marcoantonioara | 4:05d5aa4d3f2d | 73 | |
marcoantonioara | 4:05d5aa4d3f2d | 74 | |
marcoantonioara | 4:05d5aa4d3f2d | 75 | // Select frequency channel |
marcoantonioara | 4:05d5aa4d3f2d | 76 | e = sx1272.setChannel(DEFAULT_CHANNEL); |
marcoantonioara | 4:05d5aa4d3f2d | 77 | if (e) error_config_sx1272=1; |
marcoantonioara | 4:05d5aa4d3f2d | 78 | //printf("Setting Channel: state %d\n",e); |
marcoantonioara | 4:05d5aa4d3f2d | 79 | |
marcoantonioara | 4:05d5aa4d3f2d | 80 | // Select amplifier line; PABOOST or RFO |
marcoantonioara | 4:05d5aa4d3f2d | 81 | // #ifdef PABOOST |
marcoantonioara | 4:05d5aa4d3f2d | 82 | // printf("pabboost\n"); |
marcoantonioara | 4:05d5aa4d3f2d | 83 | // sx1272._needPABOOST=true; |
marcoantonioara | 4:05d5aa4d3f2d | 84 | // // previous way for setting output power |
marcoantonioara | 4:05d5aa4d3f2d | 85 | // // powerLevel='x'; |
marcoantonioara | 4:05d5aa4d3f2d | 86 | // #else |
marcoantonioara | 4:05d5aa4d3f2d | 87 | // // previous way for setting output power |
marcoantonioara | 4:05d5aa4d3f2d | 88 | // // powerLevel='M'; |
marcoantonioara | 4:05d5aa4d3f2d | 89 | // #endif |
marcoantonioara | 4:05d5aa4d3f2d | 90 | |
marcoantonioara | 4:05d5aa4d3f2d | 91 | // previous way for setting output power |
marcoantonioara | 4:05d5aa4d3f2d | 92 | // e = sx1272.setPower(powerLevel); |
marcoantonioara | 4:05d5aa4d3f2d | 93 | |
marcoantonioara | 4:05d5aa4d3f2d | 94 | e = sx1272.setPowerDBM((uint8_t)MAX_DBM); |
marcoantonioara | 4:05d5aa4d3f2d | 95 | if (e) error_config_sx1272=1; |
marcoantonioara | 4:05d5aa4d3f2d | 96 | printf("Setting Power: state %d\n",e); |
marcoantonioara | 4:05d5aa4d3f2d | 97 | |
marcoantonioara | 4:05d5aa4d3f2d | 98 | // Set the node address and print the result |
marcoantonioara | 4:05d5aa4d3f2d | 99 | e = sx1272.setNodeAddress(node_addr); |
marcoantonioara | 4:05d5aa4d3f2d | 100 | if (e) error_config_sx1272=1; |
marcoantonioara | 4:05d5aa4d3f2d | 101 | printf("Setting node addr: state %d\n",e); |
marcoantonioara | 4:05d5aa4d3f2d | 102 | |
marcoantonioara | 4:05d5aa4d3f2d | 103 | // Print a success message |
marcoantonioara | 4:05d5aa4d3f2d | 104 | if (!error_config_sx1272) printf("SX1272 successfully configured\n"); |
marcoantonioara | 4:05d5aa4d3f2d | 105 | else printf("ERROR CONFIGURATION SX1272\n"); |
marcoantonioara | 4:05d5aa4d3f2d | 106 | |
marcoantonioara | 4:05d5aa4d3f2d | 107 | wait_ms(400); |
marcoantonioara | 4:05d5aa4d3f2d | 108 | } |
marcoantonioara | 4:05d5aa4d3f2d | 109 | void lora_send_packet (uint8_t *payload, uint8_t length8) // envia pacote |
marcoantonioara | 4:05d5aa4d3f2d | 110 | { |
marcoantonioara | 4:05d5aa4d3f2d | 111 | |
marcoantonioara | 4:05d5aa4d3f2d | 112 | //write on FIFO |
marcoantonioara | 4:05d5aa4d3f2d | 113 | sx1272.writeRegister(REG_IRQ_FLAGS,255);//clear flags |
marcoantonioara | 4:05d5aa4d3f2d | 114 | sx1272.writeRegister(REG_OP_MODE, LORA_STANDBY_MODE); // Stdby LoRa mode to write in FIFO |
marcoantonioara | 4:05d5aa4d3f2d | 115 | sx1272.writeRegister(REG_PAYLOAD_LENGTH_LORA, length8); |
marcoantonioara | 4:05d5aa4d3f2d | 116 | sx1272.writeRegister(REG_FIFO_TX_BASE_ADDR,0x00); |
marcoantonioara | 4:05d5aa4d3f2d | 117 | sx1272.writeRegister(REG_FIFO_ADDR_PTR,0x00); |
marcoantonioara | 4:05d5aa4d3f2d | 118 | |
marcoantonioara | 4:05d5aa4d3f2d | 119 | for(unsigned int i = 0; i <= length8; i++) { |
marcoantonioara | 4:05d5aa4d3f2d | 120 | sx1272.writeRegister(REG_FIFO, payload[i]); // Writing the payload in FIFO |
marcoantonioara | 4:05d5aa4d3f2d | 121 | } |
marcoantonioara | 4:05d5aa4d3f2d | 122 | |
marcoantonioara | 4:05d5aa4d3f2d | 123 | //________________Send Data__________________ |
marcoantonioara | 4:05d5aa4d3f2d | 124 | sx1272.writeRegister(REG_IRQ_FLAGS,255);//clear flags |
marcoantonioara | 4:05d5aa4d3f2d | 125 | sx1272.writeRegister(REG_OP_MODE, LORA_TX_MODE); // LORA mode - Tx |
marcoantonioara | 4:05d5aa4d3f2d | 126 | |
marcoantonioara | 4:05d5aa4d3f2d | 127 | unsigned long exitTime = millis()+1400;//2 segundos para sair do for |
marcoantonioara | 4:05d5aa4d3f2d | 128 | unsigned long Time= millis(); |
marcoantonioara | 4:05d5aa4d3f2d | 129 | char value = sx1272.readRegister(REG_IRQ_FLAGS); |
marcoantonioara | 4:05d5aa4d3f2d | 130 | |
marcoantonioara | 4:05d5aa4d3f2d | 131 | while ((bitRead(value, 3) == 0) && (Time < exitTime)) { |
marcoantonioara | 4:05d5aa4d3f2d | 132 | value=sx1272.readRegister(REG_IRQ_FLAGS); |
marcoantonioara | 4:05d5aa4d3f2d | 133 | Time= millis(); |
marcoantonioara | 4:05d5aa4d3f2d | 134 | wait_ms(50); |
marcoantonioara | 4:05d5aa4d3f2d | 135 | } |
marcoantonioara | 4:05d5aa4d3f2d | 136 | |
marcoantonioara | 4:05d5aa4d3f2d | 137 | wait_ms(50); |
marcoantonioara | 4:05d5aa4d3f2d | 138 | |
marcoantonioara | 4:05d5aa4d3f2d | 139 | } |
marcoantonioara | 4:05d5aa4d3f2d | 140 | |
marcoantonioara | 4:05d5aa4d3f2d | 141 | void lora_send_data(int mode) //data predefined |
marcoantonioara | 4:05d5aa4d3f2d | 142 | { |
marcoantonioara | 4:05d5aa4d3f2d | 143 | led1=1; |
marcoantonioara | 4:05d5aa4d3f2d | 144 | sx1272.writeRegister(REG_OP_MODE,129);//standby |
marcoantonioara | 4:05d5aa4d3f2d | 145 | |
marcoantonioara | 4:05d5aa4d3f2d | 146 | |
marcoantonioara | 4:05d5aa4d3f2d | 147 | |
marcoantonioara | 4:05d5aa4d3f2d | 148 | if (mode == DATA ) { |
marcoantonioara | 4:05d5aa4d3f2d | 149 | #ifdef BME280 |
marcoantonioara | 4:05d5aa4d3f2d | 150 | sprintf(float_temp,"%2.2f",getTemperature()); |
marcoantonioara | 4:05d5aa4d3f2d | 151 | sprintf(float_press,"%04.2f",getPressure()); |
marcoantonioara | 4:05d5aa4d3f2d | 152 | sprintf(float_hum,"%2.2f",getHumidity()); |
marcoantonioara | 4:05d5aa4d3f2d | 153 | |
marcoantonioara | 4:05d5aa4d3f2d | 154 | //============= internet of turtles ============= |
marcoantonioara | 4:05d5aa4d3f2d | 155 | sprintf(float_breathing_time,"%04.2f", last_breathing_time); |
marcoantonioara | 4:05d5aa4d3f2d | 156 | sprintf(float_diving_time,"%04.2f", last_diving_time); |
marcoantonioara | 4:05d5aa4d3f2d | 157 | r_size=sprintf((char*)message,"\\!#Dt%04.2f_Bt%04.2f_%s°C_%shPa_%s%%",last_diving_time,last_breathing_time,float_temp,float_press,float_hum); |
marcoantonioara | 4:05d5aa4d3f2d | 158 | // ============================================== |
marcoantonioara | 4:05d5aa4d3f2d | 159 | |
marcoantonioara | 4:05d5aa4d3f2d | 160 | //size=sprintf((char*)message,"\\!#%s°C_%shPa_%s%%",float_temp,float_press,float_hum); |
marcoantonioara | 4:05d5aa4d3f2d | 161 | |
marcoantonioara | 4:05d5aa4d3f2d | 162 | lora_send_packet(message,r_size); |
marcoantonioara | 4:05d5aa4d3f2d | 163 | // sx1272.sendPacketTimeout(DEFAULT_DEST_ADDR,/* (uint8_t*)*/message, r_size); |
marcoantonioara | 4:05d5aa4d3f2d | 164 | printf("packet send :\n%s\nrsize=%d\n",message,r_size); |
marcoantonioara | 4:05d5aa4d3f2d | 165 | #endif |
marcoantonioara | 4:05d5aa4d3f2d | 166 | |
marcoantonioara | 4:05d5aa4d3f2d | 167 | } else if (mode == PING ) { |
marcoantonioara | 4:05d5aa4d3f2d | 168 | |
marcoantonioara | 4:05d5aa4d3f2d | 169 | |
marcoantonioara | 4:05d5aa4d3f2d | 170 | //sx1272.sendPacketTimeout(DEFAULT_DEST_ADDR, message_ping, sizeof(message_ping)); |
marcoantonioara | 4:05d5aa4d3f2d | 171 | lora_send_packet(message_ping,sizeof(message_ping)); |
marcoantonioara | 4:05d5aa4d3f2d | 172 | printf("packet send :\n%s\n",message_ping); |
marcoantonioara | 4:05d5aa4d3f2d | 173 | |
marcoantonioara | 4:05d5aa4d3f2d | 174 | |
marcoantonioara | 4:05d5aa4d3f2d | 175 | } else if (mode == PONG ) { |
marcoantonioara | 4:05d5aa4d3f2d | 176 | |
marcoantonioara | 4:05d5aa4d3f2d | 177 | //sx1272.sendPacketTimeout(DEFAULT_DEST_ADDR, message_pong, sizeof(message_pong)); |
marcoantonioara | 4:05d5aa4d3f2d | 178 | lora_send_packet(message_pong,sizeof(message_pong)); |
marcoantonioara | 4:05d5aa4d3f2d | 179 | printf("packet send :\n%s\n",message_pong); |
marcoantonioara | 4:05d5aa4d3f2d | 180 | } |
marcoantonioara | 4:05d5aa4d3f2d | 181 | |
marcoantonioara | 4:05d5aa4d3f2d | 182 | wait_ms(300); |
marcoantonioara | 4:05d5aa4d3f2d | 183 | |
marcoantonioara | 4:05d5aa4d3f2d | 184 | sx1272.writeRegister(REG_IRQ_FLAGS,255);//clear flags |
marcoantonioara | 4:05d5aa4d3f2d | 185 | sx1272.writeRegister(REG_OP_MODE,133); //leitura continua |
marcoantonioara | 4:05d5aa4d3f2d | 186 | cont++; |
marcoantonioara | 4:05d5aa4d3f2d | 187 | printf("number=%d\n",cont); |
marcoantonioara | 4:05d5aa4d3f2d | 188 | |
marcoantonioara | 4:05d5aa4d3f2d | 189 | led1=0; |
marcoantonioara | 4:05d5aa4d3f2d | 190 | } |
marcoantonioara | 4:05d5aa4d3f2d | 191 | |
marcoantonioara | 4:05d5aa4d3f2d | 192 | |
marcoantonioara | 4:05d5aa4d3f2d | 193 | void lora_print_packet() |
marcoantonioara | 4:05d5aa4d3f2d | 194 | { |
marcoantonioara | 4:05d5aa4d3f2d | 195 | |
marcoantonioara | 4:05d5aa4d3f2d | 196 | led2=1; |
marcoantonioara | 4:05d5aa4d3f2d | 197 | sx1272.writeRegister(REG_OP_MODE,129);//standby |
marcoantonioara | 4:05d5aa4d3f2d | 198 | |
marcoantonioara | 4:05d5aa4d3f2d | 199 | uint8_t pac_size; |
marcoantonioara | 4:05d5aa4d3f2d | 200 | |
marcoantonioara | 4:05d5aa4d3f2d | 201 | sx1272.writeRegister(REG_FIFO_ADDR_PTR,sx1272.readRegister(REG_FIFO_RX_CURRENT_ADDR));//set fifo pointer to read packet |
marcoantonioara | 4:05d5aa4d3f2d | 202 | pac_size = sx1272.readRegister(REG_RX_NB_BYTES);//read size of packet |
marcoantonioara | 4:05d5aa4d3f2d | 203 | for(int i =0 ; i<pac_size ; i++) { //print packet |
marcoantonioara | 4:05d5aa4d3f2d | 204 | buffer[i]=sx1272.readRegister(REG_FIFO); |
marcoantonioara | 4:05d5aa4d3f2d | 205 | if (buffer[i]== '\n') printf(" \\n"); |
marcoantonioara | 4:05d5aa4d3f2d | 206 | if (buffer[i]== 0x0B) printf("tab"); |
marcoantonioara | 4:05d5aa4d3f2d | 207 | printf("%c",buffer[i]);//print packet |
marcoantonioara | 4:05d5aa4d3f2d | 208 | } |
marcoantonioara | 4:05d5aa4d3f2d | 209 | printf("\n"); |
marcoantonioara | 4:05d5aa4d3f2d | 210 | |
marcoantonioara | 4:05d5aa4d3f2d | 211 | |
marcoantonioara | 4:05d5aa4d3f2d | 212 | for(int i =0 ; i<pac_size ; i++) { |
marcoantonioara | 4:05d5aa4d3f2d | 213 | if ((buffer[i] =='P') && (buffer[i+1] =='i') && (buffer[i+2] =='n') && (buffer[i+3] =='g') ) { //look for Ping in packet |
marcoantonioara | 4:05d5aa4d3f2d | 214 | sx1272.writeRegister(0x12,255);//clear flags |
marcoantonioara | 4:05d5aa4d3f2d | 215 | lora_send_data(PONG); |
marcoantonioara | 4:05d5aa4d3f2d | 216 | i=pac_size; |
marcoantonioara | 4:05d5aa4d3f2d | 217 | } |
marcoantonioara | 4:05d5aa4d3f2d | 218 | if ((buffer[i] =='R') && (buffer[i+1] =='e') && (buffer[i+2] =='s') && (buffer[i+3] =='e') && (buffer[i+4] =='t') ) {// look reset |
marcoantonioara | 4:05d5aa4d3f2d | 219 | uint32_t *ptr; |
marcoantonioara | 4:05d5aa4d3f2d | 220 | ptr = (uint32_t *)1073743132;// endereço gpregret 0x4000051C |
marcoantonioara | 4:05d5aa4d3f2d | 221 | *ptr = 0xB1;//BOOTLOADER_DFU_START |
marcoantonioara | 4:05d5aa4d3f2d | 222 | NVIC_SystemReset(); |
marcoantonioara | 4:05d5aa4d3f2d | 223 | } |
marcoantonioara | 4:05d5aa4d3f2d | 224 | |
marcoantonioara | 4:05d5aa4d3f2d | 225 | } |
marcoantonioara | 4:05d5aa4d3f2d | 226 | |
marcoantonioara | 4:05d5aa4d3f2d | 227 | |
marcoantonioara | 4:05d5aa4d3f2d | 228 | wait_ms(30); |
marcoantonioara | 4:05d5aa4d3f2d | 229 | sx1272.writeRegister(REG_IRQ_FLAGS,255);//clear flags |
marcoantonioara | 4:05d5aa4d3f2d | 230 | sx1272.writeRegister(REG_OP_MODE,133); //leitura continua |
marcoantonioara | 4:05d5aa4d3f2d | 231 | led2=0; |
marcoantonioara | 4:05d5aa4d3f2d | 232 | |
marcoantonioara | 4:05d5aa4d3f2d | 233 | } |
marcoantonioara | 4:05d5aa4d3f2d | 234 | void lora_sleep(){ |
marcoantonioara | 4:05d5aa4d3f2d | 235 | lora_mode_ant = sx1272.readRegister(REG_OP_MODE); |
marcoantonioara | 4:05d5aa4d3f2d | 236 | sx1272.writeRegister(REG_OP_MODE,LORA_SLEEP_MODE); //leitura continua |
marcoantonioara | 4:05d5aa4d3f2d | 237 | |
marcoantonioara | 4:05d5aa4d3f2d | 238 | } |
marcoantonioara | 4:05d5aa4d3f2d | 239 | |
marcoantonioara | 4:05d5aa4d3f2d | 240 | int lora_wake(){ |
marcoantonioara | 4:05d5aa4d3f2d | 241 | if (lora_mode_ant!= 0){ |
marcoantonioara | 4:05d5aa4d3f2d | 242 | sx1272.writeRegister(REG_OP_MODE,lora_mode_ant); //leitura continua |
marcoantonioara | 4:05d5aa4d3f2d | 243 | return 0; |
marcoantonioara | 4:05d5aa4d3f2d | 244 | } |
marcoantonioara | 4:05d5aa4d3f2d | 245 | else return -1; |
marcoantonioara | 4:05d5aa4d3f2d | 246 | } |