diff options
author | Stefan Pöschel <github@basicmaster.de> | 2015-04-18 19:29:47 +0200 |
---|---|---|
committer | Stefan Pöschel <github@basicmaster.de> | 2015-04-18 19:29:47 +0200 |
commit | e1996a137c471a82692d239272ef90dec46b4b70 (patch) | |
tree | 409aafa3d09f0ae09da06e3f10b4ee2e06bcb951 /src/mot-encoder.cpp | |
parent | ef9577e8c4431c4ebd02cdb20c1d5d09927b68ba (diff) | |
download | ODR-PadEnc-e1996a137c471a82692d239272ef90dec46b4b70.tar.gz ODR-PadEnc-e1996a137c471a82692d239272ef90dec46b4b70.tar.bz2 ODR-PadEnc-e1996a137c471a82692d239272ef90dec46b4b70.zip |
MOT encoder protocol change: transmit used PAD bytes
Diffstat (limited to 'src/mot-encoder.cpp')
-rw-r--r-- | src/mot-encoder.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mot-encoder.cpp b/src/mot-encoder.cpp index f84326e..8422514 100644 --- a/src/mot-encoder.cpp +++ b/src/mot-encoder.cpp @@ -241,6 +241,7 @@ static int cindex_body = 0; // DLS related +#define FPAD_LEN 2 #define DLS_SEG_LEN_PREFIX 2 #define DLS_SEG_LEN_CHAR_MAX 16 #define DLS_SEG_LEN_CRC 2 @@ -1009,7 +1010,7 @@ void create_dls_pads(const char* text, const int padlen, const uint8_t charset) // distribute the segment over one or more PADs for (int seg_off = 0; seg_off < seg_len;) { - dls_pads.push_back(pad_t(padlen)); + dls_pads.push_back(pad_t(padlen + 1)); pad_t &pad = dls_pads.back(); int pad_off = padlen - 1; @@ -1048,6 +1049,9 @@ void create_dls_pads(const char* text, const int padlen, const uint8_t charset) // NULL PADDING std::fill_n(pad.begin(), pad_off + 1, 0x00); + // set used pad len + pad[padlen] = FPAD_LEN + used_xpad_len; + #if DEBUG fprintf(stderr, "DLS data group:"); for (int i = 0; i < padlen; i++) @@ -1071,7 +1075,7 @@ void writeMotPAD(int output_fd, unsigned short int padlen) { - unsigned char pad[padlen]; + unsigned char pad[padlen + 1]; int xpadlengthmask, i, j, k; unsigned short int crc; @@ -1145,7 +1149,10 @@ void writeMotPAD(int output_fd, pad[j] = 0x00; } - size_t dummy = write(output_fd, pad, padlen); + // set used pad len + pad[padlen] = FPAD_LEN + used_xpad_len; + + size_t dummy = write(output_fd, pad, padlen + 1); #if DEBUG fprintf(stderr,"MSC Data Group - Segment %d: ",i); for (j=0;j<padlen;j++) |