/*
 * @file mst_main.c
 * @brief Code for handling MST commands
 * Copyright (c) 2015, Samsung Electronics Corporation. All rights reserved.
 */

#include <comdef.h>
#include <qsee_log.h>

#include "tlc_tz_mst.h"

extern int transmit_mst_data(unsigned char *);

/**
 * send_mst_data - Send request to oem handler to transmit MST track data
 */
int send_mst_test_data(int track)
{
	int ret=-1;
	unsigned char sample_track1[] =
		{0x00,0x01,0x01,0x2C,0x02,0x65,
		 0x00,0x00,0x00,0x02,0x8a,0x3a,0x85,0x52,0x95,0x8a,0x34,0x23,0x46,0x91,
		 0x7a,0x84,0xa8,0x34,0x6b,0x47,0xc2,0xeb,0xc3,0x77,0xcf,0xcd,0x27,0x73,
		 0xe1,0xbb,0xe6,0x04,0x08,0x10,0x20,0x40,0x81,0x02,0x04,0x08,0x10,0x2f,
		 0xa2,0xa5,0x8a,0x12,0x28,0x48,0xa1,0x02,0x04,0x08,0x10,0x22,0x5a,0x93,
		 0x02,0x45,0x08,0x10,0x20,0x40,0x81,0x32,0x0d,0xc8,0x10,0x20,0x40,0x81,
		 0x02,0x7c,0x62,0x00,0x00,0x00,0x00};
	unsigned char sample_track2[] =
		{0x00,0x01,0x01,0x2C,0x01,0x04,
		 0x00,0x00,0x00,0x03,0x4d,0x0c,0x03,0x56,0xf0,0x59,0x6e,
		 0x66,0x89,0x88,0x56,0x45,0x43,0x00,0x84,0x35,0x08,0x42,
		 0x16,0x84,0x3c,0xcc,0xf2,0x1f,0xd8,0x00,0x00,0x00,0x00};

	switch(track)
	{
		case TRACK1 :
			ret=transmit_mst_data(sample_track1);
			break;

		case TRACK2 :
			ret=transmit_mst_data(sample_track2);
			break;

		default :
			break;
	}

	return ret;
}
/**
 * mst_cmd_handler - main MST command handler
 */
void mst_cmd_handler(void* cmd, uint32 cmdlen, void* rsp, uint32 rsplen)
{
	mst_req_t *req = (mst_req_t *)cmd;
	mst_rsp_t *resp = (mst_rsp_t *)rsp;

	switch(req->cmd_id)
	{
		case MST_CMD_TRACK1_TEST :
			if(send_mst_test_data(TRACK1)) {
				qsee_log(QSEE_LOG_MSG_FATAL, "[MST] Send MST Test track1 data --> Failed");
			} else {
				qsee_log(QSEE_LOG_MSG_FATAL, "[MST] Send MST Test track1 data --> Success");
			}
			resp->status = 0;
			break;
		case MST_CMD_TRACK2_TEST :
			if(send_mst_test_data(TRACK2)) {
				qsee_log(QSEE_LOG_MSG_FATAL, "[MST] Send MST Test track2 data --> Failed");
			} else {
				qsee_log(QSEE_LOG_MSG_FATAL, "[MST] Send MST Test track2 data --> Success");
			}
			resp->status = 0;
			break;
		default :
			resp->status = UNDEFINE_SVC;
			resp->data = 0;
			qsee_log(QSEE_LOG_MSG_FATAL, "[MST] Undefined command");
			break;
	}
}
