mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-13 15:36:51 +01:00
BugFix: Termination by ctl + C
Update: API mode is configurable Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
@@ -24,7 +24,6 @@
|
||||
|
||||
#include "SensorNetwork.h"
|
||||
#include "MQTTSNGWProcess.h"
|
||||
#include "Threading.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace MQTTSNGW;
|
||||
@@ -111,17 +110,27 @@ int SensorNetwork::initialize(void)
|
||||
{
|
||||
char param[MQTTSNGW_PARAM_MAX];
|
||||
uint16_t baudrate = 9600;
|
||||
uint8_t apimode = 2;
|
||||
|
||||
if (theProcess->getParam("XBee Baudrate", param) == 0)
|
||||
if (theProcess->getParam("ApiMode", param) == 0)
|
||||
{
|
||||
apimode = (uint8_t)atoi(param);
|
||||
}
|
||||
setApiMode(apimode);
|
||||
_description = "API mode ";
|
||||
sprintf(param, "%d", apimode);
|
||||
_description += param;
|
||||
|
||||
if (theProcess->getParam("Baudrate", param) == 0)
|
||||
{
|
||||
baudrate = (uint16_t)atoi(param);
|
||||
}
|
||||
_description = "Baudrate ";
|
||||
_description += ", Baudrate ";
|
||||
sprintf(param ,"%d", baudrate);
|
||||
_description += param;
|
||||
|
||||
theProcess->getParam("SerialDevice", param);
|
||||
_description = "SerialDevice ";
|
||||
_description += ", SerialDevice ";
|
||||
_description += param;
|
||||
|
||||
return XBee::open(param, baudrate);
|
||||
@@ -132,6 +141,11 @@ const char* SensorNetwork::getDescription(void)
|
||||
return _description.c_str();
|
||||
}
|
||||
|
||||
SensorNetAddress* SensorNetwork::getSenderAddress(void)
|
||||
{
|
||||
return &_clientAddr;
|
||||
}
|
||||
|
||||
/*===========================================
|
||||
Class XBee
|
||||
============================================*/
|
||||
@@ -140,6 +154,7 @@ XBee::XBee(){
|
||||
_respCd = 0;
|
||||
_dataLen = 0;
|
||||
_frameId = 0;
|
||||
_apiMode = 2;
|
||||
}
|
||||
|
||||
XBee::~XBee(){
|
||||
@@ -340,7 +355,7 @@ int XBee::send(const uint8_t* payload, uint8_t pLen, SensorNetAddress* addr){
|
||||
|
||||
void XBee::send(uint8_t c)
|
||||
{
|
||||
if(c == START_BYTE || c == ESCAPE || c == XON || c == XOFF){
|
||||
if(_apiMode == 2 && (c == START_BYTE || c == ESCAPE || c == XON || c == XOFF)){
|
||||
_serialPort->send(ESCAPE);
|
||||
_serialPort->send(c ^ 0x20);
|
||||
}else{
|
||||
@@ -352,7 +367,7 @@ int XBee::recv(uint8_t* buf)
|
||||
{
|
||||
if (_serialPort->recv(buf) )
|
||||
{
|
||||
if ( *buf == ESCAPE)
|
||||
if ( *buf == ESCAPE && _apiMode == 2 )
|
||||
{
|
||||
_serialPort->recv(buf);
|
||||
*buf = 0x20 ^ *buf;
|
||||
@@ -362,6 +377,11 @@ int XBee::recv(uint8_t* buf)
|
||||
return -1;
|
||||
}
|
||||
|
||||
void XBee::setApiMode(uint8_t mode)
|
||||
{
|
||||
_apiMode = mode;
|
||||
}
|
||||
|
||||
/*=========================================
|
||||
Class SerialPort
|
||||
=========================================*/
|
||||
|
||||
Reference in New Issue
Block a user