1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "librasdatamessage.h"
namespace Codificador {
LibrasDataMessage::LibrasDataMessage(unsigned char *data, int size) : LibrasControlSection() {
type = LIBRAS_DATA_TYPE;
messagelength = 4;
glosadatalength = size;
glosaDataBytes = NULL;
//Pode mudar
sinaislooplength = 1;
if (size > 0) {
glosaDataBytes = new unsigned char[glosadatalength];
memcpy(glosaDataBytes, data, size);
}
}
LibrasDataMessage::~LibrasDataMessage() {
if (glosaDataBytes) delete [] glosaDataBytes;
}
unsigned short LibrasDataMessage::getMessageLength() {
return messagelength;
}
unsigned int LibrasDataMessage::getStm() {
return stm;
}
unsigned short LibrasDataMessage::getSinaisLoopLength() {
return sinaislooplength;
}
unsigned char LibrasDataMessage::getGlosaDataLength() {
return glosadatalength;
}
unsigned char *LibrasDataMessage::getGlosaDataBytes() {
return glosaDataBytes;
}
void LibrasDataMessage::setMessageLength(unsigned short messagelength) {
this->messagelength = messagelength;
}
void LibrasDataMessage::setStm(unsigned int stm) {
this->stm = stm;
}
void LibrasDataMessage::setSinaisLoopLength(unsigned short sinaislooplength) {
this->sinaislooplength = sinaislooplength;
}
void LibrasDataMessage::setGlosaDataLength(unsigned char glosadatalength) {
this->glosadatalength = glosadatalength;
}
void LibrasDataMessage::setGlosaDataBytes(unsigned char *glosaDataBytes, int len) {
if (this->glosaDataBytes) {
delete [] (this->glosaDataBytes);
}
this->glosaDataBytes = new unsigned char[len];
memcpy(this->glosaDataBytes, glosaDataBytes, len);
}
unsigned char *LibrasDataMessage::generateBytes(unsigned short *librasLen) {
unsigned char *librasDataBytes;
*librasLen = glosadatalength + messagelength + 3;
sinaislooplength += glosadatalength;
librasDataBytes = new unsigned char[*librasLen];
messageid = MESSAGE_ID_DATA;
messagelength += glosadatalength;
librasDataBytes[0] = messageid & 0xFF;
librasDataBytes[1] = (messagelength >> 8) & 0xFF;
librasDataBytes[2] = messagelength & 0xFF;
librasDataBytes[3] = timecontrolflag & 0x01;
//Ajeitar pra quando tiver STM
librasDataBytes[4] = (sinaislooplength >> 8) & 0xFF;
librasDataBytes[5] = sinaislooplength & 0xFF;
librasDataBytes[6] = glosadatalength & 0xFF;
memcpy(librasDataBytes + 7, glosaDataBytes, glosadatalength);
return librasDataBytes;
}
}