remove hard coded path into CMake files
[profile/ivi/ico-vic-amb-plugin.git] / src / datamessage.cc
1 /**
2  * Copyright (C) 2012  TOYOTA MOTOR CORPORATION.
3  * 
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  * 
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  * 
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  * 
18  */
19 #include <string.h>
20
21 #include "datamessage.h"
22
23 DataMessage::DataMessage()
24 {
25 }
26
27 DataMessage::~DataMessage()
28 {
29 }
30
31 void
32 DataMessage::decode(char *msg, int size)
33 {
34     int restsize = size;
35     if (size <= KEYEVENTTYPESIZE) {
36         memset(KeyEventType, 0, size);
37         memcpy(KeyEventType, msg, size);
38         return;
39     }
40     memcpy(KeyEventType, msg, KEYEVENTTYPESIZE);
41     restsize -= KEYEVENTTYPESIZE;
42     int offset = KEYEVENTTYPESIZE;
43     if (restsize < static_cast<int>(sizeof(timeval))) {
44         return;
45     }
46     memcpy(&recordtime, msg + offset, sizeof(timeval));
47     restsize -= sizeof(timeval);
48     offset += sizeof(timeval);
49     if (restsize > static_cast<int>(sizeof(int))) {
50         memcpy(&dataopt, msg + offset, offset);
51     }
52 }
53
54 void
55 DataMessage::decodeOpt(char *keyeventtype, timeval time, void *opt)
56 {
57     memset(KeyEventType, 0, KEYEVENTTYPESIZE);
58     memcpy(KeyEventType, keyeventtype, KEYEVENTTYPESIZE);
59     recordtime = time;
60     memcpy(&dataopt, opt, sizeof(dataopt));
61 }
62
63 char *
64 DataMessage::encode(char *name, timeval time, DataOpt opt)
65 {
66     memset(messagebuf, 0, sizeof(messagebuf));
67     memcpy(messagebuf, name, KEYEVENTTYPESIZE);
68     int offset = KEYEVENTTYPESIZE;
69     memcpy(messagebuf + offset, &time, sizeof(time));
70     offset += sizeof(time);
71     memcpy(messagebuf + offset, &opt, sizeof(int) + STATUSSIZE);
72     return &messagebuf[0];
73 }
74
75 DataOpt
76 DataMessage::getDataOpt()
77 {
78     return dataopt;
79 }