| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770 | 
							- #include <stdio.h>
 
- #include <json-c/json.h>
 
- #include "../ytCore/yt_unit_shm.h"
 
- #include <string.h>
 
- #include <sqlite3.h>
 
- #include <time.h>
 
- #include <sys/time.h>
 
- #include <stdlib.h>
 
- #include <unistd.h>
 
- #define CMD_GET_REALTIME_STATUS 1
 
- #define CMD_GET_HISTORY_VALUE 2
 
- #define CMD_GET_COMM_PARAMS 3
 
- #define CMD_SET_COMM_PARAMS 4
 
- #define CMD_GET_SPNO_PARAMS 5
 
- #define CMD_SET_SPNO_PARAMS 6
 
- #define CMD_QRY_IOT_STATUS 16
 
- #define CMD_CTL 64
 
- YT_UNIT_SHM *ytShm;
 
- bool load_shm()
 
- {
 
-     int shmid;
 
-     key_t key;
 
-     if((key = ftok(SHM_PATH,(int)SHM_PORT))==-1)
 
-         return false;
 
-     if((shmid = shmget(key,sizeof(YT_UNIT_SHM),IPC_CREAT|0666))==-1)
 
-         return false;
 
-     ytShm = (YT_UNIT_SHM *)shmat(shmid,NULL,0);
 
-     return true;
 
- }
 
- void get_realtime_status(json_object *q_body, json_object *body)
 
- {
 
-     int commid,ncomm=0,comm_alarm=0,pno_alarm=0,alarmL1=0,alarmL2=0,total_count=0;
 
-     char tmp[256];
 
-     json_object *comm_list = json_object_new_array();
 
-     for(commid=0;commid<4;commid++){
 
-         if(ytShm->commList.comm[commid].ENABLED==0x01){
 
-             int count=0,add;
 
-             time_t t;
 
-             struct tm *loc_time;
 
-             json_object *o_comm = json_object_new_object();
 
-             json_object *pno_list = json_object_new_array();
 
-             ncomm++;
 
-             for(add=0;add<256;add++){
 
-                 if((ytShm->sPointList.sPoint[commid][add].ENABLED==0x01)
 
-                         &&(ytShm->sPointList.sPoint[commid][add].PNO_TYPE>0)
 
-                         &&(ytShm->sPointList.sPoint[commid][add].PNO_TYPE<3)
 
-                         ){
 
-                     count++;
 
-                     json_object *spno = json_object_new_object();
 
-                     sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][add].COMM_IDX);
 
-                     json_object_object_add(spno,"COMM",json_object_new_string(tmp));
 
-                     sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][add].BUS_ADD);
 
-                     json_object_object_add(spno,"ADDR",json_object_new_string(tmp));
 
-                     json_object_object_add(spno,"NAME",json_object_new_string(ytShm->sPointList.sPoint[commid][add].NAME));
 
-                     sprintf(tmp,"%ld",ytShm->sPointList.sPoint[commid][add].SUB_TYPE);
 
-                     json_object_object_add(spno,"SUB_TYPE",json_object_new_string(tmp));
 
-                     sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][add].PNO_TYPE);
 
-                     json_object_object_add(spno,"PNO_TYPE",json_object_new_string(tmp));
 
-                     if(ytShm->spStatusList.spStatus[commid][add].ALARM_STATUS>0){
 
-                         pno_alarm++;
 
-                         if(ytShm->spStatusList.spStatus[commid][add].ALARM_STATUS==2)
 
-                             alarmL2++;
 
-                         else if(ytShm->spStatusList.spStatus[commid][add].ALARM_STATUS==1)
 
-                             alarmL1++;
 
-                     }
 
-                     sprintf(tmp,"%d",ytShm->spStatusList.spStatus[commid][add].ALARM_STATUS);
 
-                     json_object_object_add(spno,"STATUS",json_object_new_string(tmp));
 
-                     if(ytShm->sPointList.sPoint[commid][add].PNO_TYPE==1){
 
-                         if(ytShm->spStatusList.spStatus[commid][add].REALTIME_VALUE==0)
 
-                             json_object_object_add(spno,"VALUE",json_object_new_string("0"));
 
-                         else
 
-                             json_object_object_add(spno,"VALUE",json_object_new_string("1"));
 
-                     }else{
 
-                         sprintf(tmp,"%.03f",ytShm->spStatusList.spStatus[commid][add].REALTIME_VALUE);
 
-                         json_object_object_add(spno,"VALUE",json_object_new_string(tmp));
 
-                     }
 
-                     t = ytShm->spStatusList.spStatus[commid][add].REALTIME_TIMESTAMP;
 
-                     loc_time = localtime(&t);
 
-                     sprintf(tmp,"%04d-%02d-%02d %02d:%02d:%02d",
 
-                             loc_time->tm_year+1900,
 
-                             loc_time->tm_mon+1,
 
-                             loc_time->tm_mday,
 
-                             loc_time->tm_hour,
 
-                             loc_time->tm_min,
 
-                             loc_time->tm_sec);
 
-                     json_object_object_add(spno,"UPDATETIME",json_object_new_string(tmp));
 
-                     sprintf(tmp,"%d",(ytShm->currentTime.TIMESTAMP-ytShm->spStatusList.spStatus[commid][add].REALTIME_TIMESTAMP));
 
-                     json_object_object_add(spno,"DLYTIME",json_object_new_string(tmp));
 
-                     json_object_array_add(pno_list,spno);
 
-                 }
 
-             }
 
-             total_count += count;
 
-             sprintf(tmp,"%d",ytShm->commList.comm[commid].IDX);
 
-             json_object_object_add(o_comm,"IDX",json_object_new_string(tmp));
 
-             json_object_object_add(o_comm,"PNOLIST",pno_list);
 
-             if(ytShm->commStatusList.commStatus[commid].STATUS!=0)
 
-                 comm_alarm++;
 
-             sprintf(tmp,"%d",ytShm->commStatusList.commStatus[commid].STATUS);
 
-             json_object_object_add(o_comm,"STATUS",json_object_new_string(tmp));
 
-             json_object_array_add(comm_list,o_comm);
 
-         }
 
-     }
 
-     json_object_object_add(body,"COMMLIST",comm_list);
 
- }
 
- void get_history_value(json_object *q_body, json_object *body)
 
- {
 
-     json_object *CommId=NULL, *BusAdd=NULL;
 
-     json_object_object_foreach(q_body, key, val){
 
-         if(strcmp("COMM",key)==0)
 
-             CommId = val;
 
-         else if(strcmp("ADDR",key)==0)
 
-             BusAdd = val;
 
-     }
 
-     if((CommId!=NULL)&&(BusAdd!=NULL)){
 
-         sqlite3 *db;
 
-         time_t t;
 
-         struct tm *tm_loc;
 
-         char **azResult, *errMsg, sql[1024],tmp[256];
 
-         int nrow,ncol,i;
 
-         int commid = atoi(json_object_get_string(CommId));
 
-         int busadd = atoi(json_object_get_string(BusAdd));
 
-         sprintf(tmp,"%d",commid);
 
-         json_object_object_add(body,"COMM",json_object_new_string(tmp));
 
-         sprintf(tmp,"%d",busadd);
 
-         json_object_object_add(body,"ADDR",json_object_new_string(tmp));
 
-         if((commid>=0)&&(commid<4)&&(busadd>=0)&&(busadd<256)){
 
-             if(sqlite3_open(REC_DB,&db)==SQLITE_OK){
 
-                 sprintf(sql,"select REALTIME_VALUE, AVE_VALUE, REALTIME_TIMESTAMP, MAX_VALUE, MAX_TIMESTAMP, MIN_VALUE, MIN_TIMESTAMP from yt_rec_pno where COMMID=%s and BUSADD=%s",
 
-                         json_object_get_string(CommId), json_object_get_string(BusAdd));
 
- //                printf("sql:%s<br>",sql);
 
-                 json_object *value_list = json_object_new_array();
 
-                 if(sqlite3_get_table(db,sql,&azResult,&nrow,&ncol,&errMsg)==SQLITE_OK){
 
-                     if((nrow>0)&&(ncol>=7)){
 
-                         for(i=1;i<(nrow+1);i++){
 
-                             json_object *value = json_object_new_object();
 
-                             sprintf(tmp,"%s",azResult[i*ncol+0]);
 
-                             json_object_object_add(value,"REALTIME_VALUE",json_object_new_string(tmp));
 
-                             sprintf(tmp,"%s",azResult[i*ncol+1]);
 
-                             json_object_object_add(value,"AVE_VALUE",json_object_new_string(tmp));
 
-                             t = atoll(azResult[i*ncol+2])&0xffffffff;
 
-                             tm_loc = localtime(&t);
 
-                             sprintf(tmp,"%04d-%02d-%02d %02d:%02d:%02d",
 
-                                     tm_loc->tm_year,
 
-                                     tm_loc->tm_mon+1,
 
-                                     tm_loc->tm_mday,
 
-                                     tm_loc->tm_hour,
 
-                                     tm_loc->tm_min,
 
-                                     tm_loc->tm_sec);
 
-                             json_object_object_add(value,"REALTIME_TIMESTAMP",json_object_new_string(tmp));
 
-                             sprintf(tmp,"%s",azResult[i*ncol+3]);
 
-                             json_object_object_add(value,"MAX_VALUE",json_object_new_string(tmp));
 
-                             t = atoll(azResult[i*ncol+4])&0xffffffff;
 
-                             tm_loc = localtime(&t);
 
-                             sprintf(tmp,"%04d-%02d-%02d %02d:%02d:%02d",
 
-                                     tm_loc->tm_year,
 
-                                     tm_loc->tm_mon+1,
 
-                                     tm_loc->tm_mday,
 
-                                     tm_loc->tm_hour,
 
-                                     tm_loc->tm_min,
 
-                                     tm_loc->tm_sec);
 
-                             json_object_object_add(value,"MAX_TIMESTAMP",json_object_new_string(tmp));
 
-                             sprintf(tmp,"%s",azResult[i*ncol+5]);
 
-                             json_object_object_add(value,"MIN_VALUE",json_object_new_string(tmp));
 
-                             t = atoll(azResult[i*ncol+6])&0xffffffff;
 
-                             tm_loc = localtime(&t);
 
-                             sprintf(tmp,"%04d-%02d-%02d %02d:%02d:%02d",
 
-                                     tm_loc->tm_year,
 
-                                     tm_loc->tm_mon+1,
 
-                                     tm_loc->tm_mday,
 
-                                     tm_loc->tm_hour,
 
-                                     tm_loc->tm_min,
 
-                                     tm_loc->tm_sec);
 
-                             json_object_object_add(value,"MIN_TIMESTAMP",json_object_new_string(tmp));
 
-                             json_object_array_add(value_list,value);
 
-                         }
 
-                         json_object_object_add(body,"VALUELIST",value_list);
 
-                     }else{
 
-                         json_object_object_add(body,"ErrMsg",json_object_new_string("table struct error"));
 
-                     }
 
-                     sqlite3_free_table(azResult);
 
-                 }else{
 
-                     json_object_object_add(body,"ErrMsg",json_object_new_string("db gettable failed"));
 
-                     sqlite3_free(errMsg);
 
-                 }
 
-                 sqlite3_close(db);
 
-             }else{
 
-                 json_object_object_add(body,"ErrMsg",json_object_new_string("db open failed"));
 
-             }
 
-             json_object *pno_param = json_object_new_object();
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].ENABLED);
 
-             json_object_object_add(pno_param,"ENABLED",json_object_new_string(tmp));
 
-             json_object_object_add(pno_param,"NAME",json_object_new_string(ytShm->sPointList.sPoint[commid][busadd].NAME));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].PNO_TYPE);
 
-             json_object_object_add(pno_param,"PNO_TYPE",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].PNO_ALARM);
 
-             json_object_object_add(pno_param,"PNO_ALARM",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].PNO_VALUE);
 
-             json_object_object_add(pno_param,"PNO_VALUE",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].PNO_DLY);
 
-             json_object_object_add(pno_param,"PNO_DLY",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].PNO_AD);
 
-             json_object_object_add(pno_param,"PNO_AD",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].OFFSET);
 
-             json_object_object_add(pno_param,"OFFSET",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][busadd].OFFSET_FLAG);
 
-             json_object_object_add(pno_param,"OFFSET_FLAG",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][busadd].PNO_MAX);
 
-             json_object_object_add(pno_param,"PNO_MAX",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][busadd].PNO_MIN);
 
-             json_object_object_add(pno_param,"PNO_MIN",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][busadd].ALARM_H);
 
-             json_object_object_add(pno_param,"ALARM_H",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][busadd].ALARM_L);
 
-             json_object_object_add(pno_param,"ALARM_L",json_object_new_string(tmp));
 
-             json_object_object_add(body,"PARAMS",pno_param);
 
-         }else{
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("query out of size"));
 
-         }
 
-     }else{
 
-         json_object_object_add(body,"ErrMsg",json_object_new_string("query params error"));
 
-     }
 
- }
 
- void get_comm_params(json_object *q_body, json_object *body)
 
- {
 
-     json_object *CommId=NULL;
 
-     json_object_object_foreach(q_body, key, val){
 
-         if(strcmp("COMM",key)==0)
 
-             CommId = val;
 
-     }
 
-     if((CommId!=NULL)){
 
-         char tmp[256];
 
-         int commid = atoi(json_object_get_string(CommId));
 
-         sprintf(tmp,"%d",commid);
 
-         json_object_object_add(body,"COMM",json_object_new_string(tmp));
 
-         if((commid>=0)&&(commid<4)){
 
-             json_object *comm_param = json_object_new_object();
 
-             sprintf(tmp,"%d",ytShm->commList.comm[commid].IDX);
 
-             json_object_object_add(comm_param,"IDX",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->commList.comm[commid].ENABLED);
 
-             json_object_object_add(comm_param,"ENABLED",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->commList.comm[commid].CommType);
 
-             json_object_object_add(comm_param,"COMMTYPE",json_object_new_string(tmp));
 
-             json_object_object_add(comm_param,"PATH",json_object_new_string(ytShm->commList.comm[commid].PATH));
 
-             json_object_object_add(body,"PARAMS",comm_param);
 
-         }else{
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("query out of size"));
 
-         }
 
-     }else{
 
-         json_object_object_add(body,"ErrMsg",json_object_new_string("query params error"));
 
-     }
 
- }
 
- void set_comm_params(json_object *q_body, json_object *body)
 
- {
 
-     json_object *CommId=NULL, *CommParams=NULL;
 
-     json_object_object_foreach(q_body, key, val){
 
-         if(strcmp("COMM",key)==0)
 
-             CommId = val;
 
-         else if(strcmp("PARAMS",key)==0)
 
-             CommParams = val;
 
-     }
 
-     if((CommId!=NULL)&&(CommParams!=NULL)){
 
-         char tmp[256];
 
-         int commid = atoi(json_object_get_string(CommId));
 
-         sprintf(tmp,"%d",commid);
 
-         json_object_object_add(body,"COMM",json_object_new_string(tmp));
 
-         if((commid>=0)&&(commid<4)){
 
-             json_object *Idx=NULL, *Enabled=NULL, *CommType=NULL, *Path=NULL;
 
-             json_object_object_foreach(CommParams, key, val){
 
-                 if(strcmp("IDX",key)==0)
 
-                     Idx = val;
 
-                 else if(strcmp("ENABLED",key)==0)
 
-                     Enabled = val;
 
-                 else if(strcmp("COMMTYPE",key)==0)
 
-                     CommType = val;
 
-                 else if(strcmp("PATH",key)==0)
 
-                     Path = val;
 
-             }
 
-             if((Idx!=NULL)
 
-                     &&(json_object_get_int(Idx)==commid)
 
-                     &&(Enabled!=NULL)
 
-                     &&(CommType!=NULL)
 
-                     &&(Path!=NULL))
 
-             {
 
-                 int enabled = json_object_get_int(Enabled);
 
-                 int commtype = json_object_get_int(CommType);
 
-                 char path[512];
 
-                 sprintf(path,"%s",json_object_get_string(Path));
 
-                 if((enabled>=0)&&(enabled<2)&&(commtype>=0)&&(strlen(path)<255)){
 
-                     ytShm->commList.comm[commid].IDX = commid&0xff;
 
-                     ytShm->commList.comm[commid].ENABLED = enabled&0xff;
 
-                     ytShm->commList.comm[commid].CommType = commtype&0xff;
 
-                     sprintf(ytShm->commList.comm[commid].PATH,"%s",path);
 
-                     ytShm->commList.comm[commid].UNSAVED =0x01;
 
-                     json_object_object_add(body,"SETUP",json_object_new_string("TRUE"));
 
-                 }else{
 
-                     json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-                     json_object_object_add(body,"ErrMsg",json_object_new_string("set params out of size"));
 
-                 }
 
-             }else{
 
-                 json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-                 json_object_object_add(body,"ErrMsg",json_object_new_string("set params error"));
 
-             }
 
-         }else{
 
-             json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("query out of size"));
 
-         }
 
-     }else{
 
-         json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-         json_object_object_add(body,"ErrMsg",json_object_new_string("query params error"));
 
-     }
 
- }
 
- void get_spno_params(json_object *q_body, json_object *body)
 
- {
 
-     json_object *CommId=NULL, *Addr=NULL;
 
-     json_object_object_foreach(q_body, key, val){
 
-         if(strcmp("COMM",key)==0)
 
-             CommId = val;
 
-         else if(strcmp("ADDR",key)==0)
 
-             Addr = val;
 
-     }
 
-     if((CommId!=NULL)&&(Addr!=NULL)){
 
-         char tmp[256];
 
-         int commid = json_object_get_int(CommId);
 
-         int addr = json_object_get_int(Addr);
 
-         sprintf(tmp,"%d",commid);
 
-         json_object_object_add(body,"COMM",json_object_new_string(tmp));
 
-         sprintf(tmp,"%d",addr);
 
-         json_object_object_add(body,"ADDR",json_object_new_string(tmp));
 
-         if((commid>=0)&&(commid<4)
 
-                 &&(addr>=0)&&(addr<256)){
 
-             json_object *params = json_object_new_object();
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].COMM_IDX);
 
-             json_object_object_add(params,"COMM_IDX",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].BUS_ADD);
 
-             json_object_object_add(params,"BUS_ADD",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].ENABLED);
 
-             json_object_object_add(params,"ENABLED",json_object_new_string(tmp));
 
-             json_object_object_add(params,"NAME",json_object_new_string(ytShm->sPointList.sPoint[commid][addr].NAME));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].PNO_TYPE);
 
-             json_object_object_add(params,"PNO_TYPE",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].PNO_ALARM);
 
-             json_object_object_add(params,"PNO_ALARM",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].PNO_VALUE);
 
-             json_object_object_add(params,"PNO_VALUE",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].PNO_DLY);
 
-             json_object_object_add(params,"PNO_DLY",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].PNO_AD);
 
-             json_object_object_add(params,"PNO_AD",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].OFFSET);
 
-             json_object_object_add(params,"OFFSET",json_object_new_string(tmp));
 
-             sprintf(tmp,"%d",ytShm->sPointList.sPoint[commid][addr].OFFSET_FLAG);
 
-             json_object_object_add(params,"OFFSET_FLAG",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][addr].PNO_MAX);
 
-             json_object_object_add(params,"PNO_MAX",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][addr].PNO_MIN);
 
-             json_object_object_add(params,"PNO_MIN",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][addr].ALARM_H);
 
-             json_object_object_add(params,"ALARM_H",json_object_new_string(tmp));
 
-             sprintf(tmp,"%.03f",ytShm->sPointList.sPoint[commid][addr].ALARM_L);
 
-             json_object_object_add(params,"ALARM_L",json_object_new_string(tmp));
 
-             sprintf(tmp,"%ld",ytShm->sPointList.sPoint[commid][addr].SUB_TYPE);
 
-             json_object_object_add(params,"SUB_TYPE",json_object_new_string(tmp));
 
-             json_object_object_add(body,"PARAMS",params);
 
-         }else{
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("query out of size"));
 
-         }
 
-     }else{
 
-         json_object_object_add(body,"ErrMsg",json_object_new_string("query params error"));
 
-     }
 
- }
 
- void set_spno_params(json_object *q_body, json_object *body)
 
- {
 
-     json_object *CommId=NULL, *Addr=NULL, *Params=NULL;
 
-     json_object_object_foreach(q_body, key, val){
 
-         if(strcmp("COMM",key)==0)
 
-             CommId = val;
 
-         else if(strcmp("ADDR",key)==0)
 
-             Addr = val;
 
-         else if(strcmp("PARAMS",key)==0)
 
-             Params = val;
 
-     }
 
-     if((CommId!=NULL)&&(Addr!=NULL)
 
-             &&(Params!=NULL)){
 
-         char tmp[256];
 
-         int commid = json_object_get_int(CommId);
 
-         int addr = json_object_get_int(Addr);
 
-         sprintf(tmp,"%d",commid);
 
-         json_object_object_add(body,"COMM",json_object_new_string(tmp));
 
-         sprintf(tmp,"%d",addr);
 
-         json_object_object_add(body,"ADDR",json_object_new_string(tmp));
 
-         if((commid>=0)&&(commid<4)
 
-                 &&(addr>=0)&&(addr<256)){
 
-             json_object *CommIdx=NULL, *BusAdd=NULL, *Enabled=NULL, *Name=NULL;
 
-             json_object *PnoType=NULL, *PnoAlarm=NULL, *PnoValue=NULL, *PnoDly=NULL;
 
-             json_object *PnoAd=NULL, *Offset=NULL, *OffsetFlag=NULL, *PnoMax=NULL;
 
-             json_object *PnoMin=NULL, *AlarmH=NULL, *AlarmL=NULL, *SubType=NULL;
 
-             json_object_object_foreach(Params, key, val){
 
-                 if(strcmp("COMM_IDX",key)==0)
 
-                     CommIdx = val;
 
-                 else if(strcmp("BUS_ADD",key)==0)
 
-                     BusAdd = val;
 
-                 else if(strcmp("ENABLED",key)==0)
 
-                     Enabled = val;
 
-                 else if(strcmp("NAME",key)==0)
 
-                     Name = val;
 
-                 else if(strcmp("PNO_TYPE",key)==0)
 
-                     PnoType = val;
 
-                 else if(strcmp("PNO_ALARM",key)==0)
 
-                     PnoAlarm = val;
 
-                 else if(strcmp("PNO_VALUE",key)==0)
 
-                     PnoValue = val;
 
-                 else if(strcmp("PNO_DLY",key)==0)
 
-                     PnoDly = val;
 
-                 else if(strcmp("PNO_AD",key)==0)
 
-                     PnoAd = val;
 
-                 else if(strcmp("OFFSET",key)==0)
 
-                     Offset = val;
 
-                 else if(strcmp("OFFSET_FLAG",key)==0)
 
-                     OffsetFlag = val;
 
-                 else if(strcmp("PNO_MAX",key)==0)
 
-                     PnoMax = val;
 
-                 else if(strcmp("PNO_MIN",key)==0)
 
-                     PnoMin = val;
 
-                 else if(strcmp("ALARM_H",key)==0)
 
-                     AlarmH = val;
 
-                 else if(strcmp("ALARM_L",key)==0)
 
-                     AlarmL = val;
 
-                 else if(strcmp("SUB_TYPE",key)==0)
 
-                     SubType = val;
 
-             }
 
-             if((CommIdx!=NULL)&&(BusAdd!=NULL)&&(Enabled!=NULL)
 
-                     &&(Name!=NULL)&&(PnoType!=NULL)&&(PnoAlarm!=NULL)
 
-                     &&(PnoValue!=NULL)&&(PnoDly!=NULL)&&(PnoAd!=NULL)
 
-                     &&(Offset!=NULL)&&(OffsetFlag!=NULL)&&(PnoMax!=NULL)
 
-                     &&(PnoMin!=NULL)&&(AlarmH!=NULL)&&(AlarmL!=NULL)
 
-                     &&(SubType!=NULL)){
 
-                 int commidx = atoi(json_object_get_string(CommIdx));
 
-                 int busadd = atoi(json_object_get_string(BusAdd));
 
-                 int enabled = atoi(json_object_get_string(Enabled));
 
-                 int pnotype = atoi(json_object_get_string(PnoType));
 
-                 int pnoalarm = atoi(json_object_get_string(PnoAlarm));
 
-                 int pnovalue = atoi(json_object_get_string(PnoValue));
 
-                 int pnodly = atoi(json_object_get_string(PnoDly));
 
-                 int pnoad = atoi(json_object_get_string(PnoAd));
 
-                 int offset = atoi(json_object_get_string(Offset));
 
-                 int offset_flag = atoi(json_object_get_string(OffsetFlag));
 
-                 float pnomax = atof(json_object_get_string(PnoMax));
 
-                 float pnomin = atof(json_object_get_string(PnoMin));
 
-                 float alarmh = atof(json_object_get_string(AlarmH));
 
-                 float alarml = atof(json_object_get_string(AlarmL));
 
-                 uint subtype = (atoll(json_object_get_string(SubType)))&0xffffffff;
 
-                 if((commidx==commid)&&(busadd==addr)&&(enabled>=0)&&(enabled<2)
 
-                         &&(pnotype>=0)&&(pnotype<5)&&(pnoalarm>=0)&&(pnoalarm<3)
 
-                         &&(pnovalue>=0)&&(pnovalue<4)&&(pnodly>=0)&&(pnodly<256)
 
-                         &&(pnoad>=0)&&(pnoad<17)&&(offset>=0)&&(offset<256)
 
-                         &&(offset_flag>=0)&&(offset_flag<2)&&(strlen(json_object_get_string(Name))<=220)){
 
-                     ytShm->sPointList.sPoint[commid][addr].COMM_IDX = commidx;
 
-                     ytShm->sPointList.sPoint[commid][addr].BUS_ADD = busadd;
 
-                     ytShm->sPointList.sPoint[commid][addr].ENABLED = enabled;
 
-                     sprintf(ytShm->sPointList.sPoint[commid][addr].NAME,"%s",json_object_get_string(Name));
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_TYPE = pnotype;
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_ALARM = pnoalarm;
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_VALUE = pnovalue;
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_DLY = pnodly;
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_AD = pnoad;
 
-                     ytShm->sPointList.sPoint[commid][addr].OFFSET = offset;
 
-                     ytShm->sPointList.sPoint[commid][addr].OFFSET_FLAG = offset_flag;
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_MAX = pnomax;
 
-                     ytShm->sPointList.sPoint[commid][addr].PNO_MIN = pnomin;
 
-                     ytShm->sPointList.sPoint[commid][addr].ALARM_H = alarmh;
 
-                     ytShm->sPointList.sPoint[commid][addr].ALARM_L = alarml;
 
-                     ytShm->sPointList.sPoint[commid][addr].SUB_TYPE = subtype;
 
-                     ytShm->sPointList.sPoint[commid][addr].UNSAVED = 0x01;
 
-                     json_object_object_add(body,"SETUP",json_object_new_string("TRUE"));
 
-                 }else{
 
-                     json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-                     json_object_object_add(body,"ErrMsg",json_object_new_string("set params out of size"));
 
-                 }
 
-             }else{
 
-                 json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-                 json_object_object_add(body,"ErrMsg",json_object_new_string("set params error"));
 
-             }
 
-         }else{
 
-             json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("query out of size"));
 
-         }
 
-     }else{
 
-         json_object_object_add(body,"SETUP",json_object_new_string("FALSE"));
 
-         json_object_object_add(body,"ErrMsg",json_object_new_string("query params error"));
 
-     }
 
- }
 
- void qry_iot_status(json_object *q_body, json_object *body)
 
- {
 
-     int comm,adds,i;
 
-     int count[5],alarm[5],out[5];
 
-     json_object *iotlist,*obj[5],*obj_list[5];
 
-     char tmp[256];
 
-     iotlist = json_object_new_array();
 
-     for(i=0;i<5;i++)
 
-     {
 
-         count[i]=0;
 
-         alarm[i]=0;
 
-         out[i]=0;
 
-         obj[i] = json_object_new_object();
 
-         obj_list[i] = json_object_new_array();
 
-     }
 
-     for(comm=0;comm<4;comm++)
 
-     {
 
-         if(ytShm->commList.comm[comm].ENABLED==0x01){
 
-             for(adds=0;adds<256;adds++)
 
-             {
 
-                 if(ytShm->sPointList.sPoint[comm][adds].ENABLED==0x01)
 
-                 {
 
-                     json_object *sp = json_object_new_object();
 
-                     for(i=0;i<5;i++)
 
-                     {
 
-                         if((ytShm->sPointList.sPoint[comm][adds].SUB_TYPE&(0x01<<i))==(0x01<<i))
 
-                             count[i]++;
 
-                     }
 
-                     if(ytShm->commStatusList.commStatus[comm].STATUS!=0x01)
 
-                     {
 
-                         if(ytShm->sPointList.sPoint[comm][adds].SUB_TYPE>0)
 
-                         {
 
-                             for(i=0;i<5;i++)
 
-                             {
 
-                                 if((ytShm->sPointList.sPoint[comm][adds].SUB_TYPE&(0x01<<i))==(0x01<<i))
 
-                                     out[i]++;
 
-                             }
 
-                             json_object_object_add(sp,"STATUS_ID",json_object_new_int(1));
 
-                             json_object_object_add(sp,"STATUS",json_object_new_string("离线"));
 
-                         }
 
-                     }else{
 
-                         if(ytShm->spStatusList.spStatus[comm][adds].ALARM_STATUS!=0x00)
 
-                         {
 
-                             for(i=0;i<5;i++)
 
-                             {
 
-                                 if((ytShm->sPointList.sPoint[comm][adds].SUB_TYPE&(0x01<<i))==(0x01<<i))
 
-                                     alarm[i]++;
 
-                             }
 
-                             json_object_object_add(sp,"STATUS_ID",json_object_new_int(2));
 
-                             json_object_object_add(sp,"STATUS",json_object_new_string("告警"));
 
-                         }else{
 
-                             json_object_object_add(sp,"STATUS_ID",json_object_new_int(0));
 
-                             json_object_object_add(sp,"STATUS",json_object_new_string("正常"));
 
-                         }
 
-                     }
 
-                     json_object_object_add(sp,"COMM",json_object_new_int(comm));
 
-                     json_object_object_add(sp,"ADDR",json_object_new_int(adds));
 
-                     json_object_object_add(sp,"PNO_NAME",
 
-                                            json_object_new_string(ytShm->sPointList.sPoint[comm][adds].NAME));
 
-                     if(ytShm->sPointList.sPoint[comm][adds].PNO_TYPE==0x01){
 
-                         if(ytShm->spStatusList.spStatus[comm][adds].REALTIME_VALUE==0.0)
 
-                             json_object_object_add(sp,"VALUE",json_object_new_string("0"));
 
-                         else
 
-                             json_object_object_add(sp,"VALUE",json_object_new_string("1"));
 
-                     }else{
 
-                         sprintf(tmp,"%.3f",ytShm->spStatusList.spStatus[comm][adds].REALTIME_VALUE);
 
-                         json_object_object_add(sp,"VALUE",json_object_new_string(tmp));
 
-                     }
 
-                     time_t t = ytShm->spStatusList.spStatus[comm][adds].REALTIME_TIMESTAMP;
 
-                     struct tm *loc_time = localtime(&t);
 
-                     sprintf(tmp,"%04d-%02d-%02d %02d:%02d:%02d",
 
-                             loc_time->tm_year+1900,
 
-                             loc_time->tm_mon+1,
 
-                             loc_time->tm_mday,
 
-                             loc_time->tm_hour,
 
-                             loc_time->tm_min,
 
-                             loc_time->tm_sec);
 
-                     json_object_object_add(sp,"TIME",json_object_new_string(tmp));
 
-                     for(i=0;i<5;i++)
 
-                     {
 
-                         if((ytShm->sPointList.sPoint[comm][adds].SUB_TYPE&(0x01<<i))==(0x01<<i))
 
-                             json_object_array_add(obj_list[i],sp);
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     for(i=0;i<5;i++)
 
-     {
 
-         json_object_object_add(obj[i],"ID",json_object_new_int(i+1));
 
-         switch(i){
 
-         case 0:
 
-             json_object_object_add(obj[i],"NAME",json_object_new_string("火灾监控实时信息"));
 
-             break;
 
-         case 1:
 
-             json_object_object_add(obj[i],"NAME",json_object_new_string("电气火灾监控实时信息"));
 
-             break;
 
-         case 2:
 
-             json_object_object_add(obj[i],"NAME",json_object_new_string("消防水系统监控实时信息"));
 
-             break;
 
-         case 3:
 
-             json_object_object_add(obj[i],"NAME",json_object_new_string("通道监控实时信息"));
 
-             break;
 
-         case 4:
 
-             json_object_object_add(obj[i],"NAME",json_object_new_string("消防电源监控实时信息"));
 
-             break;
 
-         }
 
-         json_object_object_add(obj[i],"COUNT",json_object_new_int(count[i]));
 
-         json_object_object_add(obj[i],"OUT",json_object_new_int(out[i]));
 
-         json_object_object_add(obj[i],"ALARM",json_object_new_int(alarm[i]));
 
-         json_object_object_add(obj[i],"LIST",obj_list[i]);
 
-         json_object_array_add(iotlist,obj[i]);
 
-     }
 
-     json_object_object_add(body,"IOT_LIST",iotlist);
 
- }
 
- void json_cmd(int cmd, json_object *q_body, json_object *body)
 
- {
 
-     switch (cmd) {
 
-     case CMD_GET_REALTIME_STATUS:
 
-         get_realtime_status(q_body,body);
 
-         break;
 
-     case CMD_GET_HISTORY_VALUE:
 
-         get_history_value(q_body,body);
 
-         break;
 
-     case CMD_GET_COMM_PARAMS:
 
-         get_comm_params(q_body,body);
 
-         break;
 
-     case CMD_SET_COMM_PARAMS:
 
-         set_comm_params(q_body,body);
 
-         break;
 
-     case CMD_GET_SPNO_PARAMS:
 
-         get_spno_params(q_body, body);
 
-         break;
 
-     case CMD_SET_SPNO_PARAMS:
 
-         set_spno_params(q_body, body);
 
-         break;
 
-     case CMD_QRY_IOT_STATUS:
 
-         qry_iot_status(q_body,body);
 
-         break;
 
-     case CMD_CTL:
 
-         break;
 
-     default:
 
-         break;
 
-     }
 
- }
 
- bool json_request_action(char *request, json_object *body)
 
- {
 
-     json_object *q_json = NULL, *q_ver = NULL, *q_body =NULL;
 
-     json_object *q_cmd = NULL, *q_reply=NULL;
 
-     int cmd;
 
-     q_json = json_tokener_parse(request);
 
-     if(q_json!=NULL){
 
-         json_object_object_foreach(q_json,key,val){
 
-             if(strcmp(key,"REPLY")==0){
 
-                 q_reply = val;
 
-             }else if(strcmp(key,"VER")==0){
 
-                 q_ver = val;
 
-             }else if(strcmp(key,"BODY")==0){
 
-                 q_body = val;
 
-             }
 
-         }
 
-         if(q_reply==NULL){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("reply null"));
 
-             return false;
 
-         }else if(strcmp(json_object_get_string(q_reply),"0")!=0){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("reply error"));
 
-             return false;
 
-         }
 
-         if(q_ver==NULL){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("version null"));
 
-             return false;
 
-         }else if(strcmp(json_object_get_string(q_ver),"1.00")!=0){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("version error"));
 
-             return false;
 
-         }
 
-         if(q_body==NULL){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("body null"));
 
-             return false;
 
-         }
 
-         json_object_object_foreach(q_body,key2,val2){
 
-             if(strcmp(key2,"CMD")==0){
 
-                 q_cmd = val2;
 
-             }
 
-         }
 
-         if(q_cmd==NULL){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("cmd null"));
 
-             return false;
 
-         }else if(json_object_get_type(q_cmd)!=json_type_int){
 
-             json_object_put(q_json);
 
-             json_object_object_add(body,"ErrMsg",json_object_new_string("cmd datatype error"));
 
-             return false;
 
-         }
 
-         cmd = json_object_get_int(q_cmd);
 
-         json_object_object_add(body,"CMD",json_object_new_int(cmd));
 
-         json_cmd(cmd,q_body,body);
 
-         json_object_put(q_json);
 
-     }else{
 
-         json_object_object_add(body,"ErrMsg",json_object_new_string("query null"));
 
-         return false;
 
-     }
 
-     return true;
 
- }
 
- int main(void)
 
- {
 
-     char *input,*lenstr,*data;
 
-     char tmpstr[1024];
 
-     json_object *json,*json_body;
 
-     int len;
 
-     printf("%s%c%c\n","Content-Type:text/html;charset=UTF-8",13,10);
 
-     json = json_object_new_object();
 
-     json_object_object_add(json,"VER",json_object_new_string("1.00"));
 
-     json_object_object_add(json,"NAME",json_object_new_string("Usky_IoT-03"));
 
-     lenstr = getenv("CONTENT_LENGTH");
 
-     if(lenstr){
 
-         len = atoi(lenstr);
 
-         if((len>0)&&(len<1024)){
 
-             input = (char *)malloc((unsigned)(len+2));
 
-             data = (char *)malloc((unsigned)(len+2));
 
-             fgets(input,len+1,stdin);
 
-             if(load_shm()){
 
-                 ytShm->dogTimeList.dogTime[63].LASTFEED=0x01;
 
-                 sprintf(tmpstr,"%04d-%02d-%02d %02d:%02d:%02d",
 
-                         ytShm->currentTime.YEAR,
 
-                         ytShm->currentTime.MONTH,
 
-                         ytShm->currentTime.DAY,
 
-                         ytShm->currentTime.HOUR,
 
-                         ytShm->currentTime.MINUTE,
 
-                         ytShm->currentTime.SECOND);
 
-                 json_object_object_add(json,"TIMESTAMP",json_object_new_string(tmpstr));
 
-                 json_body = json_object_new_object();
 
-                if(json_request_action(input, json_body)){
 
-                    json_object_object_add(json,"RESULT",json_object_new_string("1"));
 
-                    json_object_object_add(json,"BODY",json_body);
 
-                }else{
 
-                    json_object_object_add(json,"RESULT",json_object_new_string("0"));
 
-                    json_object_object_add(json,"MESSAGE",json_object_new_string("Query Json error."));
 
-                    json_object_object_add(json,"BODY",json_body);
 
-                }
 
-                shmdt(ytShm);
 
-             }else{
 
-                 json_object_object_add(json,"RESULT",json_object_new_string("0"));
 
-                 json_object_object_add(json,"MESSAGE",json_object_new_string("Load Share Memory failed."));
 
-             }
 
-             json_object_object_add(json,"VER",json_object_new_string("1.00"));
 
-             json_object_object_add(json,"REPLY",json_object_new_string("1"));
 
-             free(data);
 
-             free(input);
 
-         }else{
 
-             json_object_object_add(json,"RESULT",json_object_new_string("0"));
 
-             json_object_object_add(json,"MESSAGE",json_object_new_string("Length error."));
 
-         }
 
-     }else{
 
-         json_object_object_add(json,"RESULT",json_object_new_string("0"));
 
-         json_object_object_add(json,"MESSAGE",json_object_new_string("No Content error."));
 
-     }
 
-     printf("%s",json_object_to_json_string(json));
 
-     json_object_put(json);
 
-     return 0;
 
- }
 
 
  |