const char * STDCALL stream_input_descriptor_imp::current_format() { uint64_t current_format = jdksavdecc_uint64_get(&stream_input_desc.current_format, 0); return utility->ieee1722_format_value_to_name(current_format); }
int acmp_callback( uint32_t notification_flag, uint8_t *frame, uint16_t frame_len ) { uint32_t msg_type = jdksavdecc_common_control_header_get_control_data(frame, ZERO_OFFSET_IN_PAYLOAD); uint16_t seq_id = jdksavdecc_acmpdu_get_sequence_id(frame, ZERO_OFFSET_IN_PAYLOAD); uint32_t status = jdksavdecc_common_control_header_get_status(frame, ZERO_OFFSET_IN_PAYLOAD); uint64_t end_station_entity_id; struct jdksavdecc_eui64 stream_entity_station = jdksavdecc_common_control_header_get_stream_id( frame, ZERO_OFFSET_IN_PAYLOAD ); uint64_t end_stream_id = jdksavdecc_uint64_get(&stream_entity_station, 0); subject_data_elem elem; // acmp info struct jdksavdecc_acmpdu node_acmpdu; jdksavdecc_acmpdu_read( &node_acmpdu, frame, ZERO_OFFSET_IN_PAYLOAD, frame_len ); if((notification_flag == CMD_WITH_NOTIFICATION) && ((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_STATE_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_CONNECTION_RESPONSE))) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_talker_entity_id(frame, ZERO_OFFSET_IN_PAYLOAD); struct jdksavdecc_eui64 listener_entity = jdksavdecc_acmpdu_get_listener_entity_id(frame, ZERO_OFFSET_IN_PAYLOAD); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); uint64_t listener_id = jdksavdecc_uint64_get(&listener_entity, 0); if (status == ACMP_STATUS_SUCCESS) { if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_DEBUG, " [ RESPONSE_RECEIVED: %d 0x%016llx (talker), %d, %d, %d, %s ]", RESPONSE_RECEIVED, end_station_entity_id, (uint16_t)msg_type + CMD_LOOKUP, 0, 0, acmp_cmd_status_value_to_name(status)); } else { if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_ERROR, "[ RESPONSE_RECEIVED, 0x%016llx (talker), %s, %s, %s, %s, %d ]", end_station_entity_id, acmp_cmd_value_to_name(msg_type), "NULL", "NULL", acmp_cmd_status_value_to_name(status), seq_id ); acmp_recv_resp_err = true; } // add notification of get_tx_state command to obserber if (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_STATE_RESPONSE) { subject_data_elem elem; elem.listener_id = listener_id; elem.listener_index = node_acmpdu.listener_unique_id; elem.tarker_id = end_stream_id; elem.tarker_index = node_acmpdu.talker_unique_id; elem.ctrl_msg.data_type = JDKSAVDECC_SUBTYPE_ACMP; elem.ctrl_msg.msg_type = msg_type; elem.ctrl_msg.msg_resp_status = status;// -1 means timeout status. elem.data_frame = NULL;// set data frame elem.data_frame_len = 0; set_subject_data( elem, &gconnector_subjector ); notify_observer( &gconnector_subjector ); } } else if((notification_flag == CMD_WITH_NOTIFICATION) && ((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_CONNECT_RX_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_DISCONNECT_RX_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_RX_STATE_RESPONSE))) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_listener_entity_id( frame, ZERO_OFFSET_IN_PAYLOAD ); struct jdksavdecc_eui64 _tarker_id = jdksavdecc_acmpdu_get_talker_entity_id( frame, ZERO_OFFSET_IN_PAYLOAD ); uint64_t tarker_id = jdksavdecc_uint64_get( &_tarker_id, 0 ); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); if( (status == ACMP_STATUS_SUCCESS) &&\ ((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_CONNECT_RX_RESPONSE) || \ (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_DISCONNECT_RX_RESPONSE)))// udpate system descriptor connect list { if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_DEBUG, " [ RESPONSE_RECEIVED: %d 0x%016llx (listener)-0x%016llx(tarker), %d, %d, %d, %s ]", RESPONSE_RECEIVED, end_station_entity_id, tarker_id, (uint16_t)msg_type + CMD_LOOKUP, 0, 0, acmp_cmd_status_value_to_name(status)); elem.connect_flag = (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_CONNECT_RX_RESPONSE)?true:false; elem.listener_id = end_station_entity_id; elem.listener_index = node_acmpdu.listener_unique_id; elem.tarker_id = tarker_id; elem.tarker_index = node_acmpdu.talker_unique_id; elem.ctrl_msg.data_type = JDKSAVDECC_SUBTYPE_ACMP; elem.ctrl_msg.msg_type = msg_type; elem.ctrl_msg.msg_resp_status = status; elem.data_frame = NULL;// set data frame elem.data_frame_len = 0; set_subject_data( elem, &gconnector_subjector ); notify_observer( &gconnector_subjector ); } else if( (status == ACMP_STATUS_SUCCESS) && \ (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_RX_STATE_RESPONSE)) { if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_DEBUG, "[ RESPONSE_RECEIVED: %d 0x%016llx (listener), %d, %d, %d, %s ]", RESPONSE_RECEIVED, end_station_entity_id, (uint16_t)msg_type + CMD_LOOKUP, 0, 0, acmp_cmd_status_value_to_name(status)); elem.listener_id = end_station_entity_id; elem.listener_index = node_acmpdu.listener_unique_id; elem.tarker_id = tarker_id; elem.tarker_index = node_acmpdu.talker_unique_id; elem.ctrl_msg.data_type = JDKSAVDECC_SUBTYPE_ACMP; elem.ctrl_msg.msg_type = msg_type; elem.ctrl_msg.msg_resp_status = status; elem.data_frame = NULL;// set data frame elem.data_frame_len = 0; set_subject_data( elem, &gconnector_subjector ); notify_observer( &gconnector_subjector ); } else if( status != ACMP_STATUS_SUCCESS ) { if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_ERROR, "[ 0x%016llx (listener), %s, %s, %s, %s, %d ]", end_station_entity_id, acmp_cmd_value_to_name(msg_type), "NULL", "NULL", acmp_cmd_status_value_to_name(status), seq_id); elem.connect_flag = false; elem.listener_id = end_station_entity_id; elem.listener_index = node_acmpdu.listener_unique_id; elem.tarker_id = tarker_id; elem.tarker_index = node_acmpdu.talker_unique_id; elem.ctrl_msg.data_type = JDKSAVDECC_SUBTYPE_ACMP; elem.ctrl_msg.msg_type = msg_type; elem.ctrl_msg.msg_resp_status = status; elem.data_frame = NULL;// set data frame elem.data_frame_len = 0; set_subject_data( elem, &gconnector_subjector ); notify_observer( &gconnector_subjector ); acmp_recv_resp_err = true; } } else if((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_STATE_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_CONNECTION_RESPONSE)) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_talker_entity_id(frame, ZERO_OFFSET_IN_PAYLOAD); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_DEBUG, "[RESPONSE_RECEIVED, 0x%016llx (talker), %s, %s, %s, %s, %d]", end_station_entity_id, acmp_cmd_value_to_name(msg_type), "NULL", "NULL", acmp_cmd_status_value_to_name(status), seq_id); } else { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_listener_entity_id(frame, ZERO_OFFSET_IN_PAYLOAD); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_DEBUG, "[ COMMAND_SENT, 0x%016llx listener, %s, %s, %s, %s, %d ]", end_station_entity_id, acmp_cmd_value_to_name(msg_type), "NULL", "NULL", acmp_cmd_status_value_to_name(status), seq_id ); } return 0; }
uint64_t STDCALL control_descriptor_imp::control_type() { return jdksavdecc_uint64_get(&control_desc.control_type, 0); }
int acmp_controller_state_machine::callback(void *notification_id, uint32_t notification_flag, uint8_t *frame) { uint32_t msg_type = jdksavdecc_common_control_header_get_control_data(frame, ETHER_HDR_SIZE); uint16_t seq_id = jdksavdecc_acmpdu_get_sequence_id(frame, ETHER_HDR_SIZE); uint32_t status = jdksavdecc_common_control_header_get_status(frame, ETHER_HDR_SIZE); uint64_t end_station_entity_id; if((notification_flag == CMD_WITH_NOTIFICATION) && ((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_STATE_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_CONNECTION_RESPONSE))) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_talker_entity_id(frame, ETHER_HDR_SIZE); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); notification_imp_ref->post_notification_msg(RESPONSE_RECEIVED, end_station_entity_id, (uint16_t)msg_type + CMD_LOOKUP, 0, 0, status, notification_id); if(status != ACMP_STATUS_SUCCESS) { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "RESPONSE_RECEIVED, 0x%llx, %s, %s, %s, %s, %d", end_station_entity_id, utility->acmp_cmd_value_to_name(msg_type), "NULL", "NULL", utility->acmp_cmd_status_value_to_name(status), seq_id); } } else if((notification_flag == CMD_WITH_NOTIFICATION) && ((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_CONNECT_RX_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_DISCONNECT_RX_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_RX_STATE_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_RX_STATE_RESPONSE))) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_listener_entity_id(frame, ETHER_HDR_SIZE); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); notification_imp_ref->post_notification_msg(RESPONSE_RECEIVED, end_station_entity_id, (uint16_t)msg_type + CMD_LOOKUP, 0, 0, status, notification_id); if(status != ACMP_STATUS_SUCCESS) { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "RESPONSE_RECEIVED, 0x%llx, %s, %s, %s, %s, %d", end_station_entity_id, utility->acmp_cmd_value_to_name(msg_type), "NULL", "NULL", utility->acmp_cmd_status_value_to_name(status), seq_id); } } else if((msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_STATE_RESPONSE) || (msg_type == JDKSAVDECC_ACMP_MESSAGE_TYPE_GET_TX_CONNECTION_RESPONSE)) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_talker_entity_id(frame, ETHER_HDR_SIZE); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); log_imp_ref->post_log_msg(LOGGING_LEVEL_DEBUG, "RESPONSE_RECEIVED, 0x%llx, %s, %s, %s, %s, %d", end_station_entity_id, utility->acmp_cmd_value_to_name(msg_type), "NULL", "NULL", utility->acmp_cmd_status_value_to_name(status), seq_id); } else { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_listener_entity_id(frame, ETHER_HDR_SIZE); end_station_entity_id = jdksavdecc_uint64_get(&_end_station_entity_id, 0); log_imp_ref->post_log_msg(LOGGING_LEVEL_DEBUG, "COMMAND_SENT, 0x%llx, %s, %s, %s, %s, %d", end_station_entity_id, utility->acmp_cmd_value_to_name(msg_type), "NULL", "NULL", utility->acmp_cmd_status_value_to_name(status), seq_id); } return 0; }
void acmp_inflight_station_timeouts( inflight_plist acmp_sta, inflight_plist hdr ) { bool is_retried = false; inflight_plist acmp_pstation = NULL; uint8_t *frame = NULL; uint16_t frame_len = 0; uint32_t interval_time = 0; if( acmp_sta != NULL ) { acmp_pstation = acmp_sta; is_retried = is_inflight_cmds_retried( acmp_pstation ); frame = acmp_pstation->host_tx.inflight_frame.frame; frame_len = acmp_pstation->host_tx.inflight_frame.inflight_frame_len; } else { acmp_machine_debug( "noting to be proccessed by aecp timeout" ); return; } assert( frame && acmp_sta != NULL ); if( is_retried ) { struct jdksavdecc_eui64 _end_station_entity_id = jdksavdecc_acmpdu_get_listener_entity_id( frame, ZERO_OFFSET_IN_PAYLOAD ); struct jdksavdecc_eui64 _end_station_tarker_id = jdksavdecc_acmpdu_get_talker_entity_id( frame, ZERO_OFFSET_IN_PAYLOAD ); uint64_t end_station_entity_id = jdksavdecc_uint64_get( &_end_station_entity_id, 0 ); uint64_t tarker_id = jdksavdecc_uint64_get( &_end_station_tarker_id, 0 ); uint32_t msg_type = jdksavdecc_common_control_header_get_control_data( frame, 0 ); if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_ERROR, " [ COMMAND TIMEOUT: 0x%016llx, %s, %s,%d ]", end_station_entity_id, acmp_cmd_value_to_name(msg_type), "NULL", acmp_pstation->host_tx.inflight_frame.seq_id); struct jdksavdecc_acmpdu node_acmpdu; jdksavdecc_acmpdu_read( &node_acmpdu, frame, ZERO_OFFSET_IN_PAYLOAD, frame_len ); subject_data_elem elem; elem.connect_flag = false; elem.listener_id = end_station_entity_id; elem.listener_index = node_acmpdu.listener_unique_id; elem.tarker_id = tarker_id; elem.tarker_index = node_acmpdu.talker_unique_id; elem.ctrl_msg.data_type = JDKSAVDECC_SUBTYPE_ACMP; elem.ctrl_msg.msg_type = msg_type; elem.ctrl_msg.msg_resp_status = -1;// -1 means timeout status. elem.data_frame = NULL;// set data frame elem.data_frame_len = 0; set_subject_data( elem, &gconnector_subjector ); notify_observer( &gconnector_subjector ); // free inflight command node in the system release_heap_space( &acmp_pstation->host_tx.inflight_frame.frame); delect_inflight_dblist_node( &acmp_pstation ); is_inflight_timeout = true; // 设置超时 acmp_machine_debug( "is_inflight_timeout = %d", is_inflight_timeout ); } else { if (NULL != gp_log_imp) gp_log_imp->log.post_log_msg( &gp_log_imp->log, LOGGING_LEVEL_DEBUG, "[ acmp Date resend ]" ); transmit_acmp_packet_network( frame, frame_len, acmp_pstation, true, acmp_pstation->host_tx.inflight_frame.raw_dest.value, false, &interval_time ); } }
uint64_t STDCALL entity_descriptor_imp::entity_id() { return jdksavdecc_uint64_get(&entity_desc.entity_entity_id, 0); }
uint64_t STDCALL entity_descriptor_imp::lock_entity_locked_entity_id() { return jdksavdecc_uint64_get(&aem_cmd_lock_entity_resp.locked_entity_id, 0); }
uint64_t STDCALL entity_descriptor_imp::acquire_entity_owner_entity_id() { return jdksavdecc_uint64_get(&aem_cmd_acquire_entity_resp.owner_entity_id, 0); }
uint64_t STDCALL entity_descriptor_imp::association_id() { return jdksavdecc_uint64_get(&entity_desc.association_id, 0); }
int aecp_controller_state_machine::callback(void * notification_id, uint32_t notification_flag, uint8_t * frame) { uint32_t msg_type = jdksavdecc_common_control_header_get_control_data(frame, ETHER_HDR_SIZE); uint16_t cmd_type = jdksavdecc_aecpdu_aem_get_command_type(frame, ETHER_HDR_SIZE); uint32_t status = jdksavdecc_common_control_header_get_status(frame, ETHER_HDR_SIZE); uint16_t desc_type = 0; uint16_t desc_index = 0; bool is_unsolicited = cmd_type >> 15 & 0x01; cmd_type &= 0x7FFF; switch (cmd_type) { case JDKSAVDECC_AEM_COMMAND_ACQUIRE_ENTITY: desc_type = jdksavdecc_aem_command_acquire_entity_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_acquire_entity_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_LOCK_ENTITY: desc_type = jdksavdecc_aem_command_lock_entity_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_lock_entity_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_ENTITY_AVAILABLE: break; case JDKSAVDECC_AEM_COMMAND_CONTROLLER_AVAILABLE: break; case JDKSAVDECC_AEM_COMMAND_READ_DESCRIPTOR: desc_type = jdksavdecc_aem_command_read_descriptor_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_read_descriptor_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_AUDIO_MAP: desc_type = jdksavdecc_aem_command_get_audio_map_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_audio_map_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_ADD_AUDIO_MAPPINGS: desc_type = jdksavdecc_aem_command_add_audio_mappings_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_add_audio_mappings_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_REMOVE_AUDIO_MAPPINGS: desc_type = jdksavdecc_aem_command_remove_audio_mappings_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_remove_audio_mappings_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_SET_STREAM_FORMAT: desc_type = jdksavdecc_aem_command_set_stream_format_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_set_stream_format_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_STREAM_FORMAT: desc_type = jdksavdecc_aem_command_get_stream_format_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_stream_format_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_SET_STREAM_INFO: desc_type = jdksavdecc_aem_command_set_stream_info_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_set_stream_info_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_STREAM_INFO: desc_type = jdksavdecc_aem_command_get_stream_info_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_stream_info_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_SET_NAME: desc_type = jdksavdecc_aem_command_set_name_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_set_name_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_NAME: desc_type = jdksavdecc_aem_command_get_name_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_name_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_SET_SAMPLING_RATE: desc_type = jdksavdecc_aem_command_set_sampling_rate_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_set_sampling_rate_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_SAMPLING_RATE: desc_type = jdksavdecc_aem_command_get_sampling_rate_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_sampling_rate_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_SET_CLOCK_SOURCE: desc_type = jdksavdecc_aem_command_set_clock_source_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_set_clock_source_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_CLOCK_SOURCE: desc_type = jdksavdecc_aem_command_get_clock_source_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_clock_source_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_START_STREAMING: desc_type = jdksavdecc_aem_command_start_streaming_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_start_streaming_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_STOP_STREAMING: desc_type = jdksavdecc_aem_command_stop_streaming_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_stop_streaming_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_COUNTERS: desc_type = jdksavdecc_aem_command_get_counters_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_counters_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_GET_AVB_INFO: desc_type = jdksavdecc_aem_command_get_avb_info_response_get_descriptor_type(frame, ETHER_HDR_SIZE); desc_index = jdksavdecc_aem_command_get_avb_info_response_get_descriptor_index(frame, ETHER_HDR_SIZE); break; case JDKSAVDECC_AEM_COMMAND_REGISTER_UNSOLICITED_NOTIFICATION: break; case JDKSAVDECC_AEM_COMMAND_DEREGISTER_UNSOLICITED_NOTIFICATION: break; default: log_imp_ref->post_log_msg(LOGGING_LEVEL_DEBUG, "NO_MATCH_FOUND for %s", utility::aem_cmd_value_to_name(cmd_type)); break; } jdksavdecc_eui64 id = jdksavdecc_common_control_header_get_stream_id(frame, ETHER_HDR_SIZE); if ((notification_flag == CMD_WITH_NOTIFICATION) && ((msg_type == JDKSAVDECC_AECP_MESSAGE_TYPE_AEM_RESPONSE) || (msg_type == JDKSAVDECC_AECP_MESSAGE_TYPE_ADDRESS_ACCESS_RESPONSE))) { notification_imp_ref->post_notification_msg(RESPONSE_RECEIVED, jdksavdecc_uint64_get(&id, 0), cmd_type, desc_type, desc_index, status, notification_id); if (status != AEM_STATUS_SUCCESS) { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "RESPONSE_RECEIVED, 0x%llx, %s, %s, %d, %d, %s", jdksavdecc_uint64_get(&id, 0), utility::aem_cmd_value_to_name(cmd_type), utility::aem_desc_value_to_name(desc_type), desc_index, jdksavdecc_aecpdu_common_get_sequence_id(frame, ETHER_HDR_SIZE), utility::aem_cmd_status_value_to_name(status)); } } else if (((notification_flag == CMD_WITH_NOTIFICATION) || (notification_flag == CMD_WITHOUT_NOTIFICATION)) && ((msg_type == JDKSAVDECC_AECP_MESSAGE_TYPE_AEM_COMMAND) || (msg_type == JDKSAVDECC_AECP_MESSAGE_TYPE_ADDRESS_ACCESS_COMMAND))) { log_imp_ref->post_log_msg(LOGGING_LEVEL_DEBUG, "COMMAND_SENT, 0x%llx, %s, %s, %d, %d", jdksavdecc_uint64_get(&id, 0), utility::aem_cmd_value_to_name(cmd_type), utility::aem_desc_value_to_name(desc_type), desc_index, jdksavdecc_aecpdu_common_get_sequence_id(frame, ETHER_HDR_SIZE)); } else if ((notification_flag == CMD_WITHOUT_NOTIFICATION) && ((msg_type == JDKSAVDECC_AECP_MESSAGE_TYPE_AEM_RESPONSE) || (msg_type == JDKSAVDECC_AECP_MESSAGE_TYPE_ADDRESS_ACCESS_RESPONSE))) { if (is_unsolicited) { notification_imp_ref->post_notification_msg(UNSOLICITED_RESPONSE_RECEIVED, jdksavdecc_uint64_get(&id, 0), cmd_type, desc_type, desc_index, status, notification_id); } else { if (status == AEM_STATUS_SUCCESS) { log_imp_ref->post_log_msg(LOGGING_LEVEL_DEBUG, "RESPONSE_RECEIVED, 0x%llx, %s, %s, %d, %d, %s", jdksavdecc_uint64_get(&id, 0), utility::aem_cmd_value_to_name(cmd_type), utility::aem_desc_value_to_name(desc_type), desc_index, jdksavdecc_aecpdu_common_get_sequence_id(frame, ETHER_HDR_SIZE), utility::aem_cmd_status_value_to_name(status)); } else { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "RESPONSE_RECEIVED, 0x%llx, %s, %s, %d, %d, %s", jdksavdecc_uint64_get(&id, 0), utility::aem_cmd_value_to_name(cmd_type), utility::aem_desc_value_to_name(desc_type), desc_index, jdksavdecc_aecpdu_common_get_sequence_id(frame, ETHER_HDR_SIZE), utility::aem_cmd_status_value_to_name(status)); } } } return 0; }