xpl lib
Dependents: XPL-App4_cleanup XPL-App5
Diff: xPL_Message.h
- Revision:
- 0:23c0d0e1c31d
diff -r 000000000000 -r 23c0d0e1c31d xPL_Message.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xPL_Message.h Tue Oct 09 17:37:05 2018 +0000 @@ -0,0 +1,76 @@ +/* + * xPL.Arduino v0.1, xPL Implementation for Arduino + * + * This code is parsing a xPL message stored in 'received' buffer + * - isolate and store in 'line' buffer each part of the message -> detection of EOL character (DEC 10) + * - analyse 'line', function of its number and store information in xpl_header memory + * - check for each step if the message respect xPL protocol + * - parse each command line + * + * Copyright (C) 2012 johan@pirlouit.ch, olivier.lebrun@gmail.com + * Original version by Gromain59@gmail.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#ifndef xPLMessage_h +#define xPLMessage_h + +//#include "Arduino.h" +#include "mbed.h" +#include "xPL_utils.h" + +#define XPL_CMND 1 +#define XPL_STAT 2 +#define XPL_TRIG 3 + +#define XPL_MESSAGE_BUFFER_MAX 256 // going over 256 would mean changing index from byte to int +#define XPL_MESSAGE_COMMAND_MAX 10 + +class xPL_Message +{ + public: + short type; // 1=cmnd, 2=stat, 3=trig + short hop; // Hop count + + struct_id source; // source identification + struct_id target; // target identification + + struct_xpl_schema schema; + struct_command *command; + //byte command_count; + short command_count; + + bool AddCommand(const char *,const char *); + bool AddCommand(char*, char*); + + xPL_Message(); + ~xPL_Message(); + + char *toString(); + + bool IsSchema(char*, char*); + bool IsSchema(const char*, const char*); + + void SetSource(char *, char *, char *); // define my source + void SetTarget(const char *, const char * = NULL, const char * = NULL); + void SetSchema(const char *, const char *); + + + private: + bool CreateCommand(); +}; + +#endif