9 #include "controlwebsocketclient.h"
10 #include "datamessage.h"
11 #include "eventmessage.h"
12 #include "logresult.h"
14 std::vector<VehicleInfoDefine> vehicleinfolist;
17 int SetDataOpt(DataOpt *opt, int idx, T value) {
18 memcpy(opt->status + idx, &value, sizeof(value));
22 int main(int argc, char *argv[]) {
24 std::string configpath = "/etc/ambd/AMBformat.conf";
25 while ((ret = getopt(argc, argv, "c:")) != -1) {
28 configpath = std::string(optarg);
35 ifstream fin("standardvehicleinfo.txt");
37 std::vector<std::string> standardvehicleinfolist;
40 standardvehicleinfolist.push_back(str);
44 if (!config.readConfig(configpath)) {
45 std::cerr << "Can't read VIC-Plugin config file." << std::endl;
48 PortInfo portinfo = config.getPort();
50 ControlWebsocketClient stddataws, customdataws;
51 if (!stddataws.initialize("ws://127.0.0.1", portinfo.standard.dataPort, "standarddatamessage-only")) {
52 std::cerr << "Can't connect standarddatamessage-only." << std::endl;
55 if (!customdataws.initialize("ws://127.0.0.1", portinfo.custom.dataPort, "customdatamessage-only")) {
56 std::cerr << "Can't connect customdatamessage-only." << std::endl;
60 vehicleinfolist =config.getVehicleInfoConfig();
61 auto itr_end = vehicleinfolist.end();
65 enum ClientType cltype = CLIENT_VIC;
66 enum CommandType cotype = CMDTYPE_SET;
69 for (int i = 0; i < 10; i++) {
71 customdataws.service();
75 for (auto itr = vehicleinfolist.begin(); itr != itr_end; itr++) {
77 customdataws.service();
81 dopt.common_status = SUPPORT;
83 auto itr2_end = (*itr).status.end();
84 gettimeofday(&tv, NULL);
85 for (auto itr2 = (*itr).status.begin(); itr2 != itr2_end; itr2++) {
86 switch ((*itr2).type) {
89 idx += SetDataOpt(&dopt, idx, i);
90 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, i);
95 idx += SetDataOpt(&dopt, idx, d);
96 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, d);
101 idx += SetDataOpt(&dopt, idx, c);
102 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, c);
107 idx += SetDataOpt(&dopt, idx, i16);
108 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, i16);
113 idx += SetDataOpt(&dopt, idx, ui16);
114 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, ui16);
119 idx += SetDataOpt(&dopt, idx, ui32);
120 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, ui32);
125 idx += SetDataOpt(&dopt, idx, i64);
126 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, i64);
131 idx += SetDataOpt(&dopt, idx, ui64);
132 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, ui64);
137 idx += SetDataOpt(&dopt, idx, b);
138 logger.PutOut(cltype, cotype, (*itr2).ambPropertyName, b);
146 if (std::find(standardvehicleinfolist.begin(), standardvehicleinfolist.end(), std::string((*itr).KeyEventType)) != standardvehicleinfolist.end()) {
147 stddataws.send(datamsg.encode((*itr).KeyEventType, tv, dopt), StandardMessage::KEYEVENTTYPESIZE + sizeof(timeval) + sizeof(int) + idx);
151 customdataws.send(datamsg.encode((*itr).KeyEventType, tv, dopt), StandardMessage::KEYEVENTTYPESIZE + sizeof(timeval) + sizeof(int) + idx);
155 customdataws.service();
159 for (int i = 0; i < 10; i++) {
161 customdataws.service();