@@ -287,7 +287,7 @@ CoAPMessageType::Enum
287287 case ' u' : return CoAPMessageType::UPDATE_BEGIN;
288288 case ' c' : return CoAPMessageType::CHUNK;
289289 default : break ;
290- } break ;
290+ } break ;
291291 case CoAPCode::PUT:
292292 switch (path)
293293 {
@@ -297,10 +297,13 @@ CoAPMessageType::Enum
297297 if (buf[8 ]) return CoAPMessageType::SIGNAL_START;
298298 else return CoAPMessageType::SIGNAL_STOP;
299299 default : break ;
300- } break ;
300+ } break ;
301301 case CoAPCode::EMPTY:
302- return CoAPMessageType::EMPTY;
303- break ;
302+ switch (CoAP::type (buf))
303+ {
304+ case CoAPType::CON: return CoAPMessageType::PING;
305+ default : return CoAPMessageType::EMPTY_ACK;
306+ } break ;
304307 default :
305308 break ;
306309 }
@@ -449,7 +452,10 @@ int SparkProtocol::variable_value(unsigned char *buf,
449452bool SparkProtocol::send_event (const char *event_name, const char *data,
450453 int ttl, EventType::Enum event_type)
451454{
452- static system_tick_t recent_event_ticks[5 ] = { -1000 , -1000 , -1000 , -1000 , -1000 };
455+ static system_tick_t recent_event_ticks[5 ] = {
456+ (system_tick_t ) -1000 , (system_tick_t ) -1000 ,
457+ (system_tick_t ) -1000 , (system_tick_t ) -1000 ,
458+ (system_tick_t ) -1000 };
453459 static int evt_tick_idx = 0 ;
454460
455461 system_tick_t now = recent_event_ticks[evt_tick_idx] = callback_millis ();
@@ -953,6 +959,18 @@ bool SparkProtocol::handle_received_message(void)
953959 descriptor.ota_upgrade_status_sent ();
954960 break ;
955961
962+ case CoAPMessageType::PING:
963+ *msg_to_send = 0 ;
964+ *(msg_to_send + 1 ) = 16 ;
965+ empty_ack (msg_to_send + 2 , queue[2 ], queue[3 ]);
966+ if (0 > blocking_send (msg_to_send, 18 ))
967+ {
968+ // error
969+ return false ;
970+ }
971+ break ;
972+
973+ case CoAPMessageType::EMPTY_ACK:
956974 case CoAPMessageType::ERROR:
957975 default :
958976 ; // drop it on the floor
0 commit comments