Skovbrynet / Mbed 2 deprecated TankCounter

Dependencies:   EthernetInterface NTPClient SDFileSystem TextLCD WebSocketClient mbed-rtos mbed Socket lwip-eth lwip-sys lwip FATFileSystem

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers uplink.h Source File

uplink.h

00001 
00002 #ifndef _TapTraqUplink_H
00003 #define _TapTraqUplink_H
00004 
00005 #include "Websocket.h"
00006 #include "mbed.h"
00007 #include <string>
00008 
00009 #define MAX_NUMBER 10
00010 #define SetupStrSize 100
00011 #define MaxCtrl 10 //max antal ctrl der hænger på en gateway
00012 
00013 
00014 class TapTraqUplink
00015 {
00016 public:
00017     typedef struct {//Der er en setuprec for hver hane
00018         uint16_t ID,           //Hane ID
00019                  TabType,      //Hane type om det er sodavand eller øl hanne
00020                  EscTryk,      //mulighed for at hvis man tryker en ekstra gang, vil den stoppe med det samme
00021                  FlowEnable,   //Hvis der er flowmåler
00022                  FlowMode,     //0: stop ved flow, 1 fritløb sender ved timeout 2: festival mode sender hvert 10 s
00023                  IntervalUpload, //sekunder mellem hver upload
00024                  //SmartTab
00025                  XLOn, XLPause, XLTopup,
00026                  LOn, LPause, LTopup,
00027                  MOn, MPause, MTopup,
00028                  SOn, SPause, STopup;
00029     } SetupRec; //længde = 43byte
00030 
00031     typedef struct {//Der er en
00032         char EUID[17];//uniq 64 identify
00033         char ID;      //id internt
00034     } PanIdRec;
00035 
00036 //er hvor meget der er kommet igennem hver enkelt hane
00037     /**
00038     *   Constructor
00039     *
00040     * @param id Name of the client on the network
00041     * @param ws All communication between clients will be established over this websocket
00042     */
00043 
00044 
00045     TapTraqUplink(Websocket *webs) : webs(webs), index(0), index_proc(0) {
00046         std::string path = webs->getPath();
00047         std::string token = "/";
00048         size_t found;
00049         found = path.find(token);
00050         if (found != std::string::npos)
00051             found = path.find(token, found + 1);
00052         if (found != std::string::npos)
00053             path = path.substr(found + 1, std::string::npos);
00054         for (char ID=0; ID<MAX_NUMBER; ID++) {
00055             strcpy(PanId[ID].EUID,"0000000000000000");
00056             PanId[ID].ID=0;
00057         }
00058 //       strcpy(my_id, path.c_str());
00059     };
00060 //socket del
00061     //sender en flowfram fra en counter til database
00062     void FlowFrame (char *ID,uint8_t TapID, uint32_t Flow, uint32_t Spild, uint16_t Temp, uint16_t Key1,uint16_t Key2,uint16_t Key3,uint16_t Key4);
00063     //Sender et givet setup record til database
00064     void setuprec (char ID, char *node);
00065     //Frame til tank måler
00066     void TankFlowFrame (char *ID, float latitude, float longitude, uint32_t Flow, float Temp);    
00067     //Sender gateways ID    
00068     void alive(char *p);
00069 
00070     //sender ID for en counter tilkoblet gateway
00071     void panlist(char *gateway, char id);
00072 
00073     //chekcer for indgående beskeder fra WS
00074     int work();
00075     char RxStr;
00076     //Modtager setuprecord om gemmer dem på SDkort
00077     void Rxsetuprec();
00078     //dekode setup record modtaget fra ctrl. Denne sendes i to dele derfor denne opdeling
00079     void RxSetuprec1(char *p,char CtrlNr);
00080     void RxSetuprec2(char *p,char CtrlNr);
00081 
00082 //Logger/gemme del
00083     //læser alle setup record ind i hukommelse
00084     void ReadConfig();
00085     //skriver en default setup for alle
00086     void WriteDefault(void);
00087     //gemmer setuprecords fra hukommelse til SD kort
00088     void SaveConfig();
00089     //åbner på, hvis ikke den kan finde en opsætning skriver den en default
00090     void iniopen(void);
00091 
00092     void SavePanID();
00093     void ReadPanID();
00094 
00095     SetupRec SetupArr[MAX_NUMBER*MaxCtrl];
00096     PanIdRec PanId[MaxCtrl]; //10 stik 64 bit Paid
00097     int CheckPan(char *p);
00098     bool AddPan(char *p);
00099 
00100     char json_recv[100]; //modtaget data
00101 private:
00102     Websocket * webs;
00103     int index;
00104     int index_proc;
00105     char my_id[20];
00106 
00107     char Confrec[MAX_NUMBER][SetupStrSize];
00108 };
00109 
00110 
00111 
00112 
00113 #endif