Commit f195b2cd authored by v0-e's avatar v0-e

JER BIT STRING quoted hex

parent b93d80fd
...@@ -6,11 +6,6 @@ ...@@ -6,11 +6,6 @@
#include <asn_internal.h> #include <asn_internal.h>
#include <BIT_STRING.h> #include <BIT_STRING.h>
static const char *_bit_pattern[16] = {
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"
};
asn_enc_rval_t asn_enc_rval_t
BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr,
int ilevel, enum jer_encoder_flags_e flags, int ilevel, enum jer_encoder_flags_e flags,
...@@ -18,9 +13,9 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -18,9 +13,9 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr,
asn_enc_rval_t er = {0, 0, 0}; asn_enc_rval_t er = {0, 0, 0};
char scratch[128]; char scratch[128];
char *p = scratch; char *p = scratch;
char *scend = scratch + (sizeof(scratch) - 10); char *scend = scratch + (sizeof(scratch) - 4);
const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
int xcan = 0; int xcan = 1;
uint8_t *buf; uint8_t *buf;
uint8_t *end; uint8_t *end;
...@@ -35,6 +30,7 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -35,6 +30,7 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr,
/* /*
* Binary dump * Binary dump
*/ */
*p++ = '"';
for(; buf < end; buf++) { for(; buf < end; buf++) {
int v = *buf; int v = *buf;
int nline = xcan?0:(((buf - st->buf) % 8) == 0); int nline = xcan?0:(((buf - st->buf) % 8) == 0);
...@@ -43,9 +39,7 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -43,9 +39,7 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr,
p = scratch; p = scratch;
if(nline) ASN__TEXT_INDENT(1, ilevel); if(nline) ASN__TEXT_INDENT(1, ilevel);
} }
memcpy(p + 0, _bit_pattern[v >> 4], 4); p += sprintf(p, "%02x", v);
memcpy(p + 4, _bit_pattern[v & 0x0f], 4);
p += 8;
} }
if(!xcan && ((buf - st->buf) % 8) == 0) if(!xcan && ((buf - st->buf) % 8) == 0)
...@@ -54,15 +48,15 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -54,15 +48,15 @@ BIT_STRING_encode_jer(const asn_TYPE_descriptor_t *td, const void *sptr,
p = scratch; p = scratch;
if(buf == end) { if(buf == end) {
int v = *buf; uint8_t v = *buf;
int ubits = st->bits_unused; int ubits = st->bits_unused;
int i; p += sprintf(p, "%02x", v & (0xff << ubits));
for(i = 7; i >= ubits; i--)
*p++ = (v & (1 << i)) ? 0x31 : 0x30;
ASN__CALLBACK(scratch, p - scratch); ASN__CALLBACK(scratch, p - scratch);
p = scratch;
} }
*p++ = '"';
if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); ASN__CALLBACK(scratch, p - scratch);
ASN__TEXT_INDENT(1, ilevel - 1);
ASN__ENCODED_OK(er); ASN__ENCODED_OK(er);
cb_failed: cb_failed:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment