@@ -33,15 +33,17 @@ static const unsigned long NETWORK_CONNECTION_INTERVAL = 30000; /* NOT USED
33
33
CTOR/DTOR
34
34
******************************************************************************/
35
35
36
- LoRaConnectionHandler::LoRaConnectionHandler (const char *_appeui, const char *_appkey) :
36
+ LoRaConnectionHandler::LoRaConnectionHandler (const char *_appeui, const char *_appkey, _lora_band band ) :
37
37
appeui(_appeui),
38
38
appkey(_appkey),
39
+ band(band),
39
40
lastConnectionTickTime(millis()),
40
41
connectionTickTimeInterval(CHECK_INTERVAL_IDLE),
41
42
keepAlive(false ),
42
43
_on_connect_event_callback(NULL ),
43
44
_on_disconnect_event_callback(NULL ),
44
45
_on_error_event_callback(NULL ) {
46
+ netConnectionState = NetworkConnectionState::INIT;
45
47
}
46
48
47
49
/* *****************************************************************************
@@ -89,13 +91,50 @@ void LoRaConnectionHandler::write(const uint8_t *buf, size_t size) {
89
91
modem.beginPacket ();
90
92
modem.write (buf, size);
91
93
err = modem.endPacket (true );
92
- if (err > 0 ) {
93
- Serial.println (" Message sent correctly!" );
94
- } else {
95
- Serial.println (" Error sending message :(" );
96
- Serial.println (" (you may send a limited amount of messages per minute, depending on the signal strength" );
97
- Serial.println (" it may vary from 1 message every couple of seconds to 1 message every minute)" );
98
- }
94
+ if (err != size) {
95
+ switch (err) {
96
+ case -1 : {
97
+ Serial.println (" Message length is bigger than max LoRa packet!" );
98
+ Serial.println (err);
99
+ }
100
+ break ;
101
+ case -2 : {
102
+ Serial.println (" Message ack was not recieved, the message could not be delivered" );
103
+ }
104
+ break ;
105
+ case 2 : {
106
+ Serial.println (" LoRa generic error (LORA_ERROR)" );
107
+ }
108
+ break ;
109
+ case 3 : {
110
+ Serial.println (" LoRa malformed param error (LORA_ERROR_PARAM" );
111
+ }
112
+ break ;
113
+ case 4 : {
114
+ Serial.println (" LoRa chip is busy (LORA_ERROR_BUSY)" );
115
+ }
116
+ break ;
117
+ case 5 : {
118
+ Serial.println (" LoRa chip overflow error (LORA_ERROR_OVERFLOW)" );
119
+ }
120
+ break ;
121
+ case 6 : {
122
+ Serial.println (" LoRa no network error (LORA_ERROR_NO_NETWORK)" );
123
+ }
124
+ break ;
125
+ case 7 : {
126
+ Serial.println (" LoRa rx error (LORA_ERROR_RX)" );
127
+ }
128
+ break ;
129
+ case 8 : {
130
+ Serial.println (" LoRa unknown error (LORA_ERROR_UNKNOWN)" );
131
+ }
132
+ break ;
133
+ }
134
+ }
135
+ else {
136
+ Serial.println (" Message sent correctly!" );
137
+ }
99
138
}
100
139
101
140
int LoRaConnectionHandler::read () {
@@ -117,16 +156,18 @@ void LoRaConnectionHandler::update() {
117
156
switch (netConnectionState) {
118
157
case NetworkConnectionState::INIT: {
119
158
Debug.print (DBG_VERBOSE, " ::INIT" );
120
-
159
+ if (!modem.begin (band)) {
160
+ Debug.print (DBG_VERBOSE, " Failed to start module" );
161
+ changeConnectionState (NetworkConnectionState::ERROR);
162
+ };
121
163
delay (1000 );
122
164
123
165
changeConnectionState (NetworkConnectionState::CONNECTING);
124
166
}
125
167
break ;
126
168
case NetworkConnectionState::CONNECTING: {
127
169
Debug.print (DBG_VERBOSE, " ::CONNECTING" );
128
- networkStatus = modem.joinOTAA (appeui, appkey);;
129
-
170
+ networkStatus = modem.joinOTAA (appeui, appkey);
130
171
if (networkStatus != true ) {
131
172
changeConnectionState (NetworkConnectionState::ERROR);
132
173
return ;
0 commit comments