== Messages we did not rule out in our meeting: == These are the messages we did not explicitly mentioned as not relevant in our meeting. The messages marked with a + are verified to be used RX or TX by osmo-bsc. From that we can deduct that these messages are the ones that we are interested in. +ASSIGNMENT REQUEST +ASSIGNMENT COMPLETE +ASSIGNMENT FAILURE CHANNEL MODIFY REQUEST +CLEAR COMMAND +CLEAR COMPLETE +CLEAR REQUEST RESOURCE REQUEST +RESET +RESET ACK RESOURCE INDICATION +PAGING +CLASSMARK UPDATE CLASSMARK REQUEST +CIPHER MODE COMMAND +CIPHER MODE COMPLETE +CIPHER MODE REJECT +COMPLETE LAYER 3 INFORMATION +SAPI "N" REJECT RESET CIRCUIT RESET CIRCUIT ACKNOWLEDGE CONFUSION UNEQUIPPED CIRCUIT LOAD INDICATION SUSPEND RESUME CHANGE CIRCUIT CHANGE CIRCUIT ACKNOWLEDGE COMMON ID LSA INFORMATION CONNECTION ORIENTED INFORMATION PERFORM LOCATION REQUEST PERFORM LOCATION RESPONSE PERFORM LOCATION ABORT CONNECTIONLESS INFORMATION EMERGENCY RESET INDICATION EMERGENCY RESET COMMAND RESET RESOURCE RESET RESOURCE ACKNOWLEDGE (+ means, message is actually used in osmo-bsc) == Messages we actually use in osmo-bsc == This is a rough overview how osmo-bsc processes incoming messages and how it generates messages. in osmo_bsc_bssap.c: RX:BSS_MAP_MSG_RESET_ACKNOWLEDGE (no response, only prints log line) RX:BSS_MAP_MSG_PAGING (no response) RX:BSS_MAP_MSG_CLEAR_CMD => CALL:gsm0808_create_clear_complete() => TX:BSS_MAP_MSG_CLEAR_COMPLETE RX:BSS_MAP_MSG_CIPHER_MODE_CMD => CALL:gsm0808_create_cipher_reject() => on error: TX:BSS_MAP_MSG_CIPHER_MODE_REJECT on success: (no response) RX:BSS_MAP_MSG_ASSIGMENT_RQST => CALL:gsm0808_create_assignment_failure() => on error: TX:BSS_MAP_MSG_ASSIGMENT_FAILURE on success: (no response) in osmo_bsc_api.c: CALL:sapi_n_reject() => CALL:gsm0808_create_sapi_reject() => TX:BSS_MAP_MSG_SAPI_N_REJECT CALL:cipher_mode_compl() => CALL:gsm0808_create_cipher_complete() => TX:BSS_MAP_MSG_CIPHER_MODE_COMPLETE CALL:compl_l3() => CALL:gsm0808_create_layer3() => TX:BSS_MAP_MSG_COMPLETE_LAYER_3 (what happens in case of failure?) CALL:assign_compl() => CALL:gsm0808_create_assignment_completed() => TX:BSS_MAP_MSG_ASSIGMENT_COMPLETE CALL:assign_fail() => CALL:gsm0808_create_assignment_failure() => TX:BSS_MAP_MSG_ASSIGMENT_FAILURE CALL:clear_request() => CALL:gsm0808_create_clear_rqst() => TX:BSS_MAP_MSG_CLEAR_RQST CALL:classmark_chg() => CALL:gsm0808_create_classmark_update() => TX:BSS_MAP_MSG_CLASSMARK_UPDATE in osmo_bsc_msc.c ... => CALL:gsm0808_create_reset() => BSS_MAP_MSG_RESET We do not use (RX only): gsm0808_create_reset_ack() => BSS_MAP_MSG_RESET_ACKNOWLEDGE gsm0808_create_clear_command() => BSS_MAP_MSG_CLEAR_CMD == Messages we have to patch: == To make osmo-bsc AoIP compliant, the following messages have to be patched (extended) to support the new AoIP fields: +ASSIGNMENT REQUEST (BSS_MAP_MSG_ASSIGMENT_RQST, rx only, osmo_bsc_bssap.c) => Gets new fields: AoIP Transport Layer Address (MGW), Codec List (MSC Preferred), Call Identifier +ASSIGNMENT COMPLETE (BSS_MAP_MSG_ASSIGMENT_COMPLETE, gsm0808_create_assignment_completed()) (test exists) => Gets new fields: AoIP Transport Layer Address (BSS), Speech Codec (Chosen) +ASSIGNMENT FAILURE (BSS_MAP_MSG_ASSIGMENT_FAILURE, gsm0808_create_assignment_failure()) (test exists) => Codec List (BSS Supported) CLEAR COMMAND CLEAR COMPLETE CLEAR REQUEST RESET RESET ACK PAGING CLASSMARK UPDATE CIPHER MODE COMMAND CIPHER MODE COMPLETE CIPHER MODE REJECT +COMPLETE LAYER 3 INFORMATION (BSS_MAP_MSG_COMPLETE_LAYER_3, gsm0808_create_layer3()) (test exists) => Gets new fields: Codec List (BSS Supported) SAPI "N" REJECT (+ means, message needs to be patched) == Messages the MSC sends: (do we have a create function for each message?) == In case we also want to cover the MSC role, the following messeages are needed. The list has been deducted from the messages our BSC is capable to receive. For the following messages, a create function exists: gsm0808_create_reset_ack() => BSS_MAP_MSG_RESET_ACKNOWLEDGE gsm0808_create_clear_command() => BSS_MAP_MSG_CLEAR_CMD The following messages do not have a create function yet: BSS_MAP_MSG_PAGING Fields: IMSI [GSM0808_IE_IMSI] = { TLV_TYPE_TLV }, TMSI [GSM0808_IE_TMSI] = { TLV_TYPE_TLV }, Cell Identifier List [GSM0808_IE_CELL_IDENTIFIER_LIST] = { TLV_TYPE_TLV }, Channel Needed [GSM0808_IE_CHANNEL_NEEDED] = { TLV_TYPE_TV }, eMLPP Priority [GSM0808_IE_EMLPP_PRIORITY] = { TLV_TYPE_TV }, Paging Information [GSM0808_IE_PAGING_INFO] = { TLV_TYPE_TV }, BSS_MAP_MSG_CIPHER_MODE_CMD Fields: Layer 3 Header Information [GSM0808_IE_LAYER_3_HEADER_INFORMATION] = { TLV_TYPE_TLV }, Encryption Information [GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV }, Cipher Response Mode [GSM0808_IE_CIPHER_RESPONSE_MODE] = { TLV_TYPE_TV }, BSS_MAP_MSG_ASSIGMENT_RQST Does not exist yet! (contains AoIP fields!) Channel Type +[GSM0808_IE_CHANNEL_TYPE] = { TLV_TYPE_TLV }, Layer 3 Header Information -[GSM0808_IE_LAYER_3_HEADER_INFORMATION]= { TLV_TYPE_TLV }, Priority -[GSM0808_IE_PRIORITY] = { TLV_TYPE_TLV }, Circuit Identity Code +[GSM0808_IE_CIRCUIT_IDENTITY_CODE] = { TLV_TYPE_FIXED, 2 }, Downlink DTX Flag -[GSM0808_IE_DOWNLINK_DTX_FLAG] = { TLV_TYPE_TV }, Interference Band To Be Used -[GSM0808_IE_INTERFERENCE_BAND_TO_USE] = { TLV_TYPE_TV }, Classmark Information 2 -[GSM0808_IE_CLASSMARK_INFORMATION_T2] = { TLV_TYPE_TLV }, field also used by gsm0808_create_classmark_update() parameter list: const uint8_t *cm2, uint8_t cm2_len Group Call Reference -[GSM0808_IE_GROUP_CALL_REFERENCE] = { TLV_TYPE_TLV }, Talker Flag -[GSM0808_IE_TALKER_FLAG] = { TLV_TYPE_T }, Configuration Evolution Indication -[GSM0808_IE_CONFIG_EVO_INDI] = { TLV_TYPE_TV }, LSA Access Control Suppression -[GSM0808_IE_LSA_ACCESS_CTRL_SUPPR] = { TLV_TYPE_TV }, Service Handover -[GSM0808_IE_SERVICE_HANDOVER] = { TLV_TYPE_TLV }, Encryption Information -[GSM0808_IE_ENCRYPTION_INFORMATION] = { TLV_TYPE_TLV }, Talker Priority -[GSM0808_IE_TALKER_PRIORITY] = { TLV_TYPE_TV }, AoIP Transport Layer Address (MGW) #[GSM0808_IE_AOIP_TRASP_ADDR] = { TLV_TYPE_TLV }, Codec List (MSC Preferred) #[GSM0808_IE_SPEECH_CODEC_LIST] = { TLV_TYPE_TLV }, Call Identifier #[GSM0808_IE_CALL_ID] = { TLV_TYPE_FIXED, 4 }, (Fields marked with + are understood by our BSC, fields marked with - are exlicitly ignored, unmarked fields are not checked, fields marked with # are not yet understood by the BSC, but will be needed to support AoIP)