int stream_input_descriptor_imp::proc_set_stream_format_resp(void *¬ification_id, const uint8_t *frame, uint16_t frame_len, int &status) { struct jdksavdecc_frame *cmd_frame; int aem_cmd_set_stream_format_resp_returned; uint32_t msg_type; bool u_field; cmd_frame = (struct jdksavdecc_frame *)malloc(sizeof(struct jdksavdecc_frame)); memcpy(cmd_frame->payload, frame, frame_len); aem_cmd_set_stream_format_resp_returned = jdksavdecc_aem_command_set_stream_format_response_read(&aem_cmd_set_stream_format_resp, frame, ETHER_HDR_SIZE, frame_len); if(aem_cmd_set_stream_format_resp_returned < 0) { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "aem_cmd_set_stream_format_resp_read error\n"); assert(aem_cmd_set_stream_format_resp_returned >= 0); return -1; } msg_type = aem_cmd_set_stream_format_resp.aem_header.aecpdu_header.header.message_type; status = aem_cmd_set_stream_format_resp.aem_header.aecpdu_header.header.status; u_field = aem_cmd_set_stream_format_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, msg_type, u_field, cmd_frame); free(cmd_frame); return 0; }
int stream_input_descriptor_imp::proc_set_stream_format_resp(void *& notification_id, const uint8_t * frame, size_t frame_len, int & status) { struct jdksavdecc_frame cmd_frame; struct jdksavdecc_aem_command_set_stream_format_response aem_cmd_set_stream_format_resp; ssize_t aem_cmd_set_stream_format_resp_returned; uint32_t msg_type; bool u_field; memcpy(cmd_frame.payload, frame, frame_len); memset(&aem_cmd_set_stream_format_resp, 0, sizeof(jdksavdecc_aem_command_set_stream_format_response)); aem_cmd_set_stream_format_resp_returned = jdksavdecc_aem_command_set_stream_format_response_read(&aem_cmd_set_stream_format_resp, frame, ETHER_HDR_SIZE, frame_len); if (aem_cmd_set_stream_format_resp_returned < 0) { log_imp_ref->post_log_msg(LOGGING_LEVEL_ERROR, "aem_cmd_set_stream_format_resp_read error\n"); assert(aem_cmd_set_stream_format_resp_returned >= 0); return -1; } msg_type = aem_cmd_set_stream_format_resp.aem_header.aecpdu_header.header.message_type; status = aem_cmd_set_stream_format_resp.aem_header.aecpdu_header.header.status; u_field = aem_cmd_set_stream_format_resp.aem_header.command_type >> 15 & 0x01; // u_field = the msb of the uint16_t command_type if (status == AEM_STATUS_SUCCESS) { uint8_t * buffer = (uint8_t *)malloc(resp_ref->get_desc_size() * sizeof(uint8_t)); //fetch current desc frame memcpy(buffer, resp_ref->get_desc_buffer(), resp_ref->get_desc_size()); jdksavdecc_descriptor_stream_set_current_format(aem_cmd_set_stream_format_resp.stream_format, buffer, resp_ref->get_desc_pos()); //set stream format replace_desc_frame(buffer, resp_ref->get_desc_pos(), resp_ref->get_desc_size()); //replace frame free(buffer); } aecp_controller_state_machine_ref->update_inflight_for_rcvd_resp(notification_id, msg_type, u_field, &cmd_frame); return 0; }