int clock_domain_descriptor_imp::proc_get_clock_source_resp(void *& notification_id, const uint8_t * frame, size_t frame_len, int & status) { struct jdksavdecc_frame cmd_frame; struct jdksavdecc_aem_command_get_clock_source_response aem_cmd_get_clk_src_resp; ssize_t aem_cmd_get_clk_src_resp_returned; uint32_t msg_type; bool u_field; memcpy(cmd_frame.payload, frame, frame_len); memset(&aem_cmd_get_clk_src_resp, 0, sizeof(jdksavdecc_aem_command_get_clock_source_response)); aem_cmd_get_clk_src_resp_returned = jdksavdecc_aem_command_get_clock_source_response_read(&aem_cmd_get_clk_src_resp, frame, ETHER_HDR_SIZE, frame_len); if (aem_cmd_get_clk_src_resp_returned < 0) { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "aem_cmd_get_clk_src_resp_read error\n"); assert(aem_cmd_get_clk_src_resp_returned >= 0); return -1; } replace_frame(frame, ETHER_HDR_SIZE, frame_len); msg_type = aem_cmd_get_clk_src_resp.aem_header.aecpdu_header.header.message_type; status = aem_cmd_get_clk_src_resp.aem_header.aecpdu_header.header.status; u_field = aem_cmd_get_clk_src_resp.aem_header.command_type >> 15 & 0x01; // u_field = the msb of the uint16_t command_type aecp_controller_state_machine_ref->update_inflight_for_rcvd_resp(notification_id, msg_type, u_field, &cmd_frame); return 0; }
int clock_domain_descriptor_imp::proc_get_clock_source_resp(void *¬ification_id, uint32_t ¬ification_flag, uint8_t *frame, uint16_t mem_buf_len, int &status) { struct jdksavdecc_frame *ether_frame; int aem_cmd_get_clk_src_resp_returned; uint32_t msg_type; bool u_field; ether_frame = (struct jdksavdecc_frame *)malloc(sizeof(struct jdksavdecc_frame)); memcpy(ether_frame->payload, frame, mem_buf_len); aem_cmd_get_clk_src_resp_returned = jdksavdecc_aem_command_get_clock_source_response_read(&aem_cmd_get_clk_src_resp, frame, aecp::CMD_POS, mem_buf_len); if(aem_cmd_get_clk_src_resp_returned < 0) { avdecc_lib::log_ref->logging(avdecc_lib::LOGGING_LEVEL_ERROR, "aem_cmd_get_clk_src_resp_read error\n"); assert(aem_cmd_get_clk_src_resp_returned >= 0); return -1; } msg_type = aem_cmd_get_clk_src_resp.aem_header.aecpdu_header.header.message_type; status = aem_cmd_get_clk_src_resp.aem_header.aecpdu_header.header.status; u_field = aem_cmd_get_clk_src_resp.command_type >> 15 & 0x01; // u_field = the msb of the uint16_t command_type aem_controller_state_machine_ref->update_inflight_for_rcvd_resp(notification_id, notification_flag, msg_type, u_field, ether_frame); free(ether_frame); return 0; }