| module VPCD_Types { |
| |
| /* VPCD/VPICC Types, implementing the protocol used by vpcd/vpicc of |
| * vsmartcard.git by Frank Morgner. |
| */ |
| |
| import from General_Types all; |
| import from Osmocom_Types all; |
| |
| type enumerated VPCD_CtrlCmd { |
| VPCD_CTRL_OFF (0), |
| VPCD_CTRL_ON (1), |
| VPCD_CTRL_RESET (2), |
| VPCD_CTRL_ATR (4) |
| } with { variant "FIELDLENGTH(8)" }; |
| |
| type union VPCD_MsgUnion { |
| VPCD_CtrlCmd ctrl, |
| octetstring data |
| }; |
| |
| type record VPCD_PDU { |
| uint16_t len, |
| VPCD_MsgUnion u |
| } with { |
| variant (len) "LENGTHTO(u)" |
| variant (u) "CROSSTAG( |
| ctrl, len = 1; |
| data, OTHERWISE)" |
| }; |
| |
| |
| template (value) VPCD_PDU ts_VPCD_CTRL(template (value) VPCD_CtrlCmd cmd) := { |
| len := 0, // overwritten |
| u := { |
| ctrl := cmd |
| } |
| } |
| template (value) VPCD_PDU ts_VPCD_CTRL_OFF := ts_VPCD_CTRL(VPCD_CTRL_OFF); |
| template (value) VPCD_PDU ts_VPCD_CTRL_ON := ts_VPCD_CTRL(VPCD_CTRL_ON); |
| template (value) VPCD_PDU ts_VPCD_CTRL_RESET := ts_VPCD_CTRL(VPCD_CTRL_RESET); |
| template (value) VPCD_PDU ts_VPCD_CTRL_ATR := ts_VPCD_CTRL(VPCD_CTRL_ATR); |
| template (value) VPCD_PDU ts_VPCD_DATA(template (value) octetstring data) := { |
| len := 0, //overwritten |
| u := { |
| data := data |
| } |
| } |
| |
| template (present) VPCD_PDU tr_VPCD_CTRL(template (present) VPCD_CtrlCmd cmd) := { |
| len := ?, |
| u := { |
| ctrl := cmd |
| } |
| } |
| template (present) VPCD_PDU tr_VPCD_CTRL_OFF := tr_VPCD_CTRL(VPCD_CTRL_OFF); |
| template (present) VPCD_PDU tr_VPCD_CTRL_ON := tr_VPCD_CTRL(VPCD_CTRL_ON); |
| template (present) VPCD_PDU tr_VPCD_CTRL_RESET := tr_VPCD_CTRL(VPCD_CTRL_RESET); |
| template (present) VPCD_PDU tr_VPCD_CTRL_ATR := tr_VPCD_CTRL(VPCD_CTRL_ATR); |
| template (present) VPCD_PDU tr_VPCD_DATA(template (present) octetstring data) := { |
| len := ?, |
| u := { |
| data := data |
| } |
| } |
| |
| external function enc_VPCD_PDU(in VPCD_PDU msg) return octetstring |
| with { extension "prototype(convert) encode(RAW)" }; |
| |
| external function dec_VPCD_PDU(in octetstring msg) return VPCD_PDU |
| with { extension "prototype(convert) decode(RAW)" }; |
| |
| |
| |
| } with { encode "RAW" }; |