SIM-115: update simulator to use latest E2SM KPM version 3
[sim/e2-interface.git] / e2sim / asn1c / BOOLEAN_aper.c
1 /*
2  * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>.
3  * All rights reserved.
4  * Redistribution and modifications are permitted subject to BSD license.
5  */
6 #include <asn_internal.h>
7 #include <BOOLEAN.h>
8
9 asn_dec_rval_t
10 BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td,
11                     const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
12     asn_dec_rval_t rv;
13     BOOLEAN_t *st = (BOOLEAN_t *)*sptr;
14
15     (void)opt_codec_ctx;
16     (void)constraints;
17     (void)td;
18
19     if(!st) {
20         st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st)));
21         if(!st) ASN__DECODE_FAILED;
22     }
23
24     /*
25      * Extract a single bit
26      */
27     switch(per_get_few_bits(pd, 1)) {
28     case 1:
29         *st = 1;
30         break;
31     case 0:
32         *st = 0;
33         break;
34     case -1:
35     default:
36         ASN__DECODE_STARVED;
37     }
38
39     ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE");
40
41     rv.code = RC_OK;
42     rv.consumed = 1;
43     return rv;
44 }
45
46 asn_enc_rval_t
47 BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td,
48                     const asn_per_constraints_t *constraints,
49                     const void *sptr, asn_per_outp_t *po) {
50     const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
51     asn_enc_rval_t er = { 0, 0, 0 };
52
53     (void)constraints;
54
55     if(!st) ASN__ENCODE_FAILED;
56
57     if(per_put_few_bits(po, *st ? 1 : 0, 1))
58         ASN__ENCODE_FAILED;
59
60     ASN__ENCODED_OK(er);
61 }