1. 19 Apr, 2018 1 commit
    • Bi-Ruei, Chiu's avatar
      Fix item 2 of issue 254 · 0bb89078
      Bi-Ruei, Chiu authored
      1. Record the de-referenced expression to newly added field ref_expr
         of strcut asn1p_ref_t.
      2. In function asn1c_make_identifier(), not only check whehter there
         is name clash occurred for this asn1p_expr_t but also the referenced
         expression to determine whether an additional module name to be added.
      3. Change signature of some functions and variables to eliminate warning
         messages when const type pointer, i.e. const asn1p_ref_t *, variables
         versus, non-const * type pointer, i.e. asn1p_ref_t *, varibles are
         used. E.g.:
         warning: assignment discards ‘const’ qualifier from pointer target type
      0bb89078
  2. 12 Apr, 2018 2 commits
  3. 21 Mar, 2018 6 commits
  4. 14 Mar, 2018 3 commits
  5. 09 Mar, 2018 2 commits
  6. 08 Mar, 2018 5 commits
  7. 07 Mar, 2018 1 commit
  8. 06 Mar, 2018 1 commit
  9. 05 Mar, 2018 4 commits
  10. 09 Feb, 2018 1 commit
  11. 02 Feb, 2018 1 commit
  12. 26 Jan, 2018 5 commits
  13. 24 Jan, 2018 2 commits
    • Bi-Ruei, Chiu's avatar
      Regenerate test cases · 6eae4421
      Bi-Ruei, Chiu authored
      6eae4421
    • Bi-Ruei, Chiu's avatar
      Fix problem results from empty ios cells generated · 6b76c7c7
      Bi-Ruei, Chiu authored
      For RANAP specification :
      
        RANAP-ELEMENTARY-PROCEDURE ::= CLASS {
          &InitiatingMessage,
          &SuccessfulOutcome          OPTIONAL,
          &UnsuccessfulOutcome        OPTIONAL,
          &Outcome                    OPTIONAL,
          &procedureCode              ProcedureCode  UNIQUE,
          &criticality                Criticality    DEFAULT ignore
        } WITH SYNTAX {
          INITIATING MESSAGE          &InitiatingMessage
          [SUCCESSFUL OUTCOME         &SuccessfulOutcome]
          [UNSUCCESSFUL OUTCOME       &UnsuccessfulOutcome]
          [OUTCOME                    &Outcome]
          PROCEDURE CODE              &procedureCode
          [CRITICALITY                &criticality]
        }
      
      Not all instances of elementary procedure have all their
      optional members defined.
      
      For examples :
      
        iu-Release RANAP-ELEMENTARY-PROCEDURE ::= {
          INITIATING MESSAGE  Iu-ReleaseCommand
          SUCCESSFUL OUTCOME  Iu-ReleaseComplete
          PROCEDURE CODE      id-Iu-Release
          CRITICALITY         reject
        }
      
        rAB-Assignment RANAP-ELEMENTARY-PROCEDURE ::= {
          INITIATING MESSAGE	RAB-AssignmentRequest
          OUTCOME             RAB-AssignmentResponse
          PROCEDURE CODE      id-RAB-Assignment
          CRITICALITY         reject
        }
      
      So there are empty cells generated in Outcome.c ... etc.
      
        static const asn_ioc_cell_t asn_IOS_RANAP_ELEMENTARY_PROCEDURES_1_rows[] = {
          { "&InitiatingMessage", aioc__type, &asn_DEF_Iu_ReleaseCommand },
          { "&SuccessfulOutcome", aioc__type, &asn_DEF_Iu_ReleaseComplete },
          { "&UnsuccessfulOutcome",  },
          { "&Outcome",  },
          { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_Iu_Release },
          { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject },
      
          { "&InitiatingMessage", aioc__type, &asn_DEF_RAB_AssignmentRequest },
          { "&SuccessfulOutcome",  },
          { "&UnsuccessfulOutcome",  },
          { "&Outcome", aioc__type, &asn_DEF_RAB_AssignmentResponse },
          { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_49_id_RAB_Assignment },
          { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_reject }
        }
      
      However, in type_selector() functions, these undefined cell are still
      be counted into presence_index value. This results in wrong behavior for
      decoder.
      
      This commit is to fix this problem.
      6b76c7c7
  14. 23 Jan, 2018 4 commits
    • Bi-Ruei, Chiu's avatar
      Generate constant variables reference to user defined types · 8d0f6857
      Bi-Ruei, Chiu authored
      Currently, there is no code generated for following ASN.1 excerpt.
      Thus application is not aware of these values.
      
          ProtocolIE-ID ::= INTEGER (0..65535)
      
          id-MME-UE-S1AP-ID  ProtocolIE-ID ::= 0
          id-HandoverType    ProtocolIE-ID ::= 1
          id-Cause           ProtocolIE-ID ::= 2
          id-SourceID        ProtocolIE-ID ::= 3
            ...
      
          ProcedureCode ::= INTEGER (0..255)
      
          id-HandoverPreparation         ProcedureCode ::= 0
          id-HandoverResourceAllocation  ProcedureCode ::= 1
          id-HandoverNotification        ProcedureCode ::= 2
          id-PathSwitchRequest           ProcedureCode ::= 3
          ...
      
      This commit adds corresponding macro definitions in
      ProtocolIE-ID.h and ProcedureCode.h respectively.
      
          #define ProtocolIE_ID_id_MME_UE_S1AP_ID       ((ProtocolIE_ID_t)0)
          #define ProtocolIE_ID_id_HandoverType ((ProtocolIE_ID_t)1)
          #define ProtocolIE_ID_id_Cause        ((ProtocolIE_ID_t)2)
          #define ProtocolIE_ID_id_SourceID     ((ProtocolIE_ID_t)3)
          ...
      
          #define ProcedureCode_id_HandoverPreparation ((ProcedureCode_t)0)
          #define ProcedureCode_id_HandoverResourceAllocation    ((ProcedureCode_t)1)
          #define ProcedureCode_id_HandoverNotification ((ProcedureCode_t)2)
          #define ProcedureCode_id_PathSwitchRequest    ((ProcedureCode_t)3)
          ...
      
      Only types of ASN_BASIC_INTEGER and ASN_BASIC_ENUMERATED referenced
      by these constant variables are handled.
      
      Other built-in types shall be added in the future.
      8d0f6857
    • Bi-Ruei, Chiu's avatar
      Generate asn_constant.h · e436f61a
      Bi-Ruei, Chiu authored
      Currently, there is no code generated for following ASN.1 excerpt.
      Thus application is not aware of these values.
      
          maxnoofErrors           INTEGER ::= 256
          maxnoofBPLMNs           INTEGER ::= 6
          maxnoofPLMNsPerMME      INTEGER ::= 32
          maxnoofEPLMNs           INTEGER ::= 15
          ...
      
      This commit generate asn_constant.h which has the following macro
      defitions :
      
          #define maxnoofErrors (256)
          #define maxnoofBPLMNs (6)
          #define maxnoofPLMNsPerMME (32)
          #define maxnoofEPLMNs (15)
          #define maxnoofEPLMNsPlusOne (16)
          ...
      
      It only handles ASN_BASIC_INTEGER type. Other built-in types shall
      be added in the future.
      e436f61a
    • Bi-Ruei, Chiu's avatar
      Rename test cases for avoiding conflict · 8d1673db
      Bi-Ruei, Chiu authored
      8d1673db
    • Bi-Ruei, Chiu's avatar
      Use comprehensible names for instances of parameterized types · 59b9e705
      Bi-Ruei, Chiu authored
      With previous commit, the following data types are generated in ProtocolIE-Field.h
      for S1AP's ASN.1 :
      
      ```
      typedef enum ProtocolIE_Field_6564P0__value_PR {
          ProtocolIE_Field_6564P0__value_PR_NOTHING, /* No components present */
          ProtocolIE_Field_6564P0__value_PR_E_RABToBeSetupItemBearerSUReq
      } ProtocolIE_Field_6564P0__value_PR;
      
      typedef struct ProtocolIE_Field_6564P0 {
          ProtocolIE_ID_t      id;
          Criticality_t        criticality;
          struct ProtocolIE_Field_6564P0__value {
              ProtocolIE_Field_6564P0__value_PR        present;
              union ProtocolIE_Field_6564P0__value_u {
                  E_RABToBeSetupItemBearerSUReq_t      E_RABToBeSetupItemBearerSUReq;
              } choice;
      
              /* Context for parsing across buffer boundaries */
              asn_struct_ctx_t _asn_ctx;
          } value;
      
          /* Context for parsing across buffer boundaries */
          asn_struct_ctx_t _asn_ctx;
      } ProtocolIE_Field_6564P0_t;
      
      ```
      
      It's difficult for developer to recognize to which ASN.1 type they are linked.
      They all start with 'ProtocolIE_Field_'. It will be error-prone.
      
      With this commit, more human comprehensible data types are generated :
      
      ```
      
      typedef enum E_RABToBeSetupItemBearerSUReqIEs__value_PR {
          E_RABToBeSetupItemBearerSUReqIEs__value_PR_NOTHING, /* No components present */
          E_RABToBeSetupItemBearerSUReqIEs__value_PR_E_RABToBeSetupItemBearerSUReq
      } E_RABToBeSetupItemBearerSUReqIEs__value_PR;
      
      typedef struct E_RABToBeSetupItemBearerSUReqIEs {
          ProtocolIE_ID_t      id;
          Criticality_t        criticality;
          struct E_RABToBeSetupItemBearerSUReqIEs__value {
              E_RABToBeSetupItemBearerSUReqIEs__value_PR present;
              union E_RABToBeSetupItemBearerSUReqIEs__value_u {
                  E_RABToBeSetupItemBearerSUReq_t               E_RABToBeSetupItemBearerSUReq;
              } choice;
      
              /* Context for parsing across buffer boundaries */
              asn_struct_ctx_t _asn_ctx;
          } value;
      
          /* Context for parsing across buffer boundaries */
          asn_struct_ctx_t _asn_ctx;
      } E_RABToBeSetupItemBearerSUReqIEs_t;
      
      ```
      
      Developers can understand they are generated from :
      
      ```
      
      E-RABToBeSetupItemBearerSUReqIEs S1AP-PROTOCOL-IES ::= {
          { ID id-E-RABToBeSetupItemBearerSUReq CRITICALITY reject TYPE E-RABToBeSetupItemBearerSUReq PRESENCE mandatory },
          ...
      }
      
      ```
      59b9e705
  15. 16 Jan, 2018 2 commits