//----------------------------------------------------------------------------- int MIH_C_Link_Message_Decode_Link_Action_request(Bit_Buffer_t* bbP, MIH_C_Message_Link_Action_request_t *messageP) { //----------------------------------------------------------------------------- int status; MIH_C_TLV_TYPE_T tlv; u_int16_t length; MIH_C_TLV_TYPE_decode(bbP, &tlv); MIH_C_LIST_LENGTH_decode(bbP, &length); if (tlv == MIH_C_TLV_SOURCE_MIHF_ID) { MIH_C_MIHF_ID_decode(bbP, &messageP->source);} else {return MIH_PRIMITIVE_DECODE_FAILURE;} MIH_C_TLV_TYPE_decode(bbP, &tlv); MIH_C_LIST_LENGTH_decode(bbP, &length); if (tlv == MIH_C_TLV_DESTINATION_MIHF_ID) { MIH_C_MIHF_ID_decode(bbP, &messageP->destination);} else {return MIH_PRIMITIVE_DECODE_FAILURE;} status = MIH_C_Link_Primitive_Decode_Link_Action_request(bbP, &messageP->primitive); if (status == MIH_PRIMITIVE_DECODE_OK) { return MIH_MESSAGE_DECODE_OK; } if (status == MIH_PRIMITIVE_DECODE_TOO_SHORT) { return MIH_MESSAGE_DECODE_TOO_SHORT; } if (status == MIH_PRIMITIVE_DECODE_FAILURE) { return MIH_MESSAGE_DECODE_FAILURE; } if (status == MIH_PRIMITIVE_DECODE_BAD_PARAMETER) { return MIH_MESSAGE_DECODE_BAD_PARAMETER; } return status; }
//----------------------------------------------------------------------------- int MIH_C_Link_Message_Decode_Link_Capability_Discover_request(Bit_Buffer_t* bbP, MIH_C_Message_Link_Capability_Discover_request_t *messageP) { //----------------------------------------------------------------------------- int status; MIH_C_TLV_TYPE_T tlv; u_int16_t length; // SOURCE MIH_C_TLV_TYPE_decode(bbP, &tlv); MIH_C_LIST_LENGTH_decode(bbP, &length); if (tlv == MIH_C_TLV_SOURCE_MIHF_ID) { MIH_C_MIHF_ID_decode(bbP, &messageP->source); } else { printf("[MIH_C] ERROR %s() -> MIH_MESSAGE_DECODE_FAILURE @ MIH_C_TLV_SOURCE_MIHF_ID\n", __FUNCTION__); return MIH_MESSAGE_DECODE_FAILURE; } // DESTINATION MIH_C_TLV_TYPE_decode(bbP, &tlv); MIH_C_LIST_LENGTH_decode(bbP, &length); if (tlv == MIH_C_TLV_DESTINATION_MIHF_ID) { MIH_C_MIHF_ID_decode(bbP, &messageP->destination); } else { printf("[MIH_C] ERROR %s() -> MIH_MESSAGE_DECODE_FAILURE @ MIH_C_TLV_DESTINATION_MIHF_ID\n", __FUNCTION__); return MIH_MESSAGE_DECODE_FAILURE; } status = MIH_C_Link_Primitive_Decode_Link_Capability_Discover_request(bbP, &messageP->primitive); if (status == MIH_PRIMITIVE_DECODE_OK) { printf("[MIH_C] %s() -> MIH_MESSAGE_DECODE_OK \n", __FUNCTION__); return MIH_MESSAGE_DECODE_OK; } if (status == MIH_PRIMITIVE_DECODE_TOO_SHORT) { printf("[MIH_C] ERROR %s() -> MIH_MESSAGE_DECODE_TOO_SHORT \n", __FUNCTION__); return MIH_MESSAGE_DECODE_TOO_SHORT; } if (status == MIH_PRIMITIVE_DECODE_FAILURE) { printf("[MIH_C] ERROR %s() -> MIH_MESSAGE_DECODE_FAILURE \n", __FUNCTION__); return MIH_MESSAGE_DECODE_FAILURE; } if (status == MIH_PRIMITIVE_DECODE_BAD_PARAMETER) { printf("[MIH_C] ERROR %s() -> MIH_MESSAGE_DECODE_BAD_PARAMETER \n", __FUNCTION__); return MIH_MESSAGE_DECODE_BAD_PARAMETER; } return status; }