diff --git a/SerialPacket/SerialPacket.cpp b/SerialPacket/SerialPacket.cpp index 57fa9ee..d344669 100644 --- a/SerialPacket/SerialPacket.cpp +++ b/SerialPacket/SerialPacket.cpp @@ -25,10 +25,16 @@ #include "SerialPacket.h" #include "defines.h" +/// +/// Constructor using the default serial port +/// +SerialPacket::SerialPacket() : SerialPacket(Serial) +{} + /// /// Constructor /// -SerialPacket::SerialPacket() : _inputChar() +SerialPacket::SerialPacket(HardwareSerial& serial) : _inputChar(), _serial(serial) { _inComingPacketComplete = false; _incomingCounter=0; @@ -48,7 +54,7 @@ SerialPacket::SerialPacket() : _inputChar() /// void SerialPacket::begin() { - begin (DEFAULT_BAUDRATE,0); + begin (DEFAULT_BAUDRATE, 0); } /// @@ -56,7 +62,7 @@ void SerialPacket::begin() /// void SerialPacket::begin(long speed, uint8_t nodeID) { - Serial.begin(speed); + _serial.begin(speed); setNodeID(nodeID); } @@ -152,11 +158,11 @@ void SerialPacket::sendData(int16_t payload) /// void SerialPacket::sendPacket(uint8_t& payload) { - Serial.print("T"); + _serial.print("T"); hexPrinting(_packetType); - Serial.print("N"); + _serial.print("N"); hexPrinting(_nodeID); - Serial.print("I"); + _serial.print("I"); if ((_packetType == COMMAND) | (_packetType == COMMAND_REPLY)) { hexPrinting(_commandID); _parity=_packetType^_nodeID^_commandID^payload; @@ -165,11 +171,11 @@ void SerialPacket::sendPacket(uint8_t& payload) hexPrinting(_sensorID); _parity=_packetType^_nodeID^_sensorID^payload; } - Serial.print("P"); + _serial.print("P"); hexPrinting(payload); - Serial.print("Q"); + _serial.print("Q"); hexPrinting(_parity); - Serial.println(""); + _serial.println(""); } /// @@ -178,11 +184,11 @@ void SerialPacket::sendPacket(uint8_t& payload) void SerialPacket::sendPacket(int16_t& payload) { _parity=_packetType^_nodeID^_sensorID^payload; - Serial.print("T"); + _serial.print("T"); hexPrinting(_packetType); - Serial.print("N"); + _serial.print("N"); hexPrinting(_nodeID); - Serial.print("I"); + _serial.print("I"); if ((_packetType == COMMAND) | (_packetType == COMMAND_REPLY)) { hexPrinting(_commandID); } @@ -190,11 +196,11 @@ void SerialPacket::sendPacket(int16_t& payload) else if ((_packetType == DATA_ARRAY_REQUEST) | (_packetType == DATA_INT) | (_packetType == DATA_REQUEST)) { hexPrinting(_sensorID); } - Serial.print("P"); + _serial.print("P"); hexPrinting(payload); - Serial.print("Q"); + _serial.print("Q"); hexPrinting(_parity); - Serial.println(""); + _serial.println(""); } /// @@ -204,21 +210,21 @@ void SerialPacket::sendDataArray(uint8_t *dataArray, uint8_t length) { setSensorID(length); //sensorID contains the length of the data array (can be used at receiving side) _parity=_packetType^_nodeID^_sensorID; - Serial.print("T"); + _serial.print("T"); hexPrinting(_packetType); - Serial.print("N"); + _serial.print("N"); hexPrinting(_nodeID); - Serial.print("I"); + _serial.print("I"); hexPrinting(_sensorID); - Serial.print("P"); + _serial.print("P"); for(int i=0 ; i @@ -243,9 +249,9 @@ void SerialPacket::setPacketType(uint8_t type) void SerialPacket::hexPrinting(uint8_t& data) { if(data<16) { - Serial.print(0, HEX); + _serial.print(0, HEX); } - Serial.print(data, HEX); + _serial.print(data, HEX); } /// @@ -254,15 +260,15 @@ void SerialPacket::hexPrinting(uint8_t& data) void SerialPacket::hexPrinting(int16_t& data) { if(data<4096 && data>0) { - Serial.print(0, HEX); + _serial.print(0, HEX); } if(data<256 && data>0) { - Serial.print(0, HEX); + _serial.print(0, HEX); } if(data<16 && data>0) { - Serial.print(0, HEX); + _serial.print(0, HEX); } - Serial.print(uint16_t(data), HEX); //casting to suppress FFFF for negative int values + _serial.print(uint16_t(data), HEX); //casting to suppress FFFF for negative int values } /// @@ -286,8 +292,8 @@ void SerialPacket::setSensorID(uint8_t& sensorID) /// boolean SerialPacket::readSerialData() { - while (Serial.available() && _inputChar[_incomingCounter] != '\n' ) { - _inputChar[_incomingCounter]=(char)Serial.read(); + while (_serial.available() && _inputChar[_incomingCounter] != '\n' ) { + _inputChar[_incomingCounter]=(char)_serial.read(); _incomingCounter++; // This checks for a minimum lenght (longer is also ok.. problem?) if (_incomingCounter == 16) { @@ -296,7 +302,7 @@ boolean SerialPacket::readSerialData() } //Flush buffer - while (Serial.read() >= 0){} + while (_serial.read() >= 0){} // parseSerialData(); // Does not work when parsing is called in the return statement @@ -372,22 +378,22 @@ uint8_t SerialPacket::hex_to_dec(uint8_t in) /// void SerialPacket::printInfo() { - Serial.print("Type: "); - Serial.println(incomingPacket.packetType,HEX); - Serial.print("NodeID: "); - Serial.println(incomingPacket.nodeID,HEX); - Serial.print("SensorID: "); - Serial.println(incomingPacket.sensorID,HEX); - Serial.print("CommandID "); - Serial.println(incomingPacket.commandID,HEX); - Serial.print("Payload: "); - Serial.println(incomingPacket.payload,HEX); - Serial.print("Parity: "); - Serial.println(incomingPacket.parity,HEX); - Serial.println("------------"); - Serial.print("Checked parity: "); - Serial.println(_checkedParity,HEX); - Serial.println("------------"); + _serial.print("Type: "); + _serial.println(incomingPacket.packetType,HEX); + _serial.print("NodeID: "); + _serial.println(incomingPacket.nodeID,HEX); + _serial.print("SensorID: "); + _serial.println(incomingPacket.sensorID,HEX); + _serial.print("CommandID "); + _serial.println(incomingPacket.commandID,HEX); + _serial.print("Payload: "); + _serial.println(incomingPacket.payload,HEX); + _serial.print("Parity: "); + _serial.println(incomingPacket.parity,HEX); + _serial.println("------------"); + _serial.print("Checked parity: "); + _serial.println(_checkedParity,HEX); + _serial.println("------------"); } /// @@ -397,14 +403,14 @@ boolean SerialPacket::checkParity() { if (_checkedParity == incomingPacket.parity){ #ifdef DEBUG_SERIAL - Serial.println("Parity ok"); - Serial.println("----------------"); + _serial.println("Parity ok"); + _serial.println("----------------"); #endif return true; } else{ #ifdef DEBUG_SERIAL - Serial.println("Parity wrong"); + _serial.println("Parity wrong"); #endif return false; } @@ -424,4 +430,4 @@ uint8_t SerialPacket::getCommandID() uint8_t SerialPacket::getPayload() { return incomingPacket.payload; -} \ No newline at end of file +} diff --git a/SerialPacket/SerialPacket.h b/SerialPacket/SerialPacket.h index fc0c329..ba8b6ec 100644 --- a/SerialPacket/SerialPacket.h +++ b/SerialPacket/SerialPacket.h @@ -39,6 +39,7 @@ class SerialPacket { public: SerialPacket(); + SerialPacket(HardwareSerial& serial); void begin(); void begin(long speed, uint8_t nodeID); @@ -83,6 +84,8 @@ class SerialPacket char _inputChar[20]; uint8_t _incomingCounter; + HardwareSerial& _serial; + void sendPacket(uint8_t& payload); void sendPacket(int16_t& payload); void setPacketType(uint8_t type);