/*
 * cal_meas.c
 *
 *  Created on: 2023719
 *      Author: dell
 */

#include "cal_meas.h"
#include "SPI_Driv.h"
char     sw_config_data[3] = {0x00,0x00,0x00};

void  sw_config(char *slot_start)
{
		 char  slot       = (*slot_start);
		 char  m_fun      = *(slot_start+1);
		 char  ch_num_h   = *(slot_start+2);
		 char  ch_num_l   = *(slot_start+3);
		 char  volt_cur   = *(slot_start+4);
		 char  load       = *(slot_start+5);
		 char  memt_areal = *(slot_start+6);

		 u32 	 ch_num     = 0;
		 u32     relay_ctrl = 0;
		 u32     slot_en    = 0x00000001;


		 ch_num = (((u32)ch_num_h)<<8) + ((u32)ch_num_l);

		 if(m_fun==0x04)
		 {
			 //xil_printf("memt_areal: %d\n\r", memt_areal);
			 if(memt_areal==0x01)
			 {
				 u1_io_rc_dat = 0xFFFE;
				 sw_config_data[0] = (u8)(u1_io_rc_dat>>8);
				 sw_config_data[1] = (u8)(u1_io_rc_dat);
				 spi_write_onewire(U1_SW_IO_RC, sw_config_data, dat_width, CPLD_U1);
				 //xil_printf("io_rc_dat: %x\n\r", u1_io_rc_dat);
			 }
			 else
			 {
				 u1_rc_dat = 0xFFFE;
				 sw_config_data[0] = (u8)(u1_rc_dat>>8);
				 sw_config_data[1] = (u8)(u1_rc_dat);
				 spi_write_onewire(U1_SW_RC, sw_config_data, dat_width, CPLD_U1);
				// xil_printf("rc_dat: %x\n\r", u1_rc_dat);
			 }

		 }

		 if(ch_num>=1&&ch_num<=16)
		  {
		 	//xil_printf("m_fun=0x03,ch_num=1~16 \n\r");
		 	fc_dv0_dat = (0x0001<<(ch_num-1));
		 	fc_dv0_dat = ~fc_dv0_dat;
		 	sw_config_data[0] = (u8)(fc_dv0_dat>>8);
		 	sw_config_data[1] = (u8)(fc_dv0_dat);
		 	spi_write_onewire(U1_SW_FC_DV0+slot-1, sw_config_data, dat_width, CPLD_U1);
		 	spi_write_onewire(U1_SW_SC_DV0+slot-1, sw_config_data, dat_width, CPLD_U1);
		 	//xil_printf("CPLD_U1:\n\r");
		 	//xil_printf("fc_reg_addr: %d\n\r", U1_SW_FC_DV0+slot-1);
		 	//xil_printf("sc_reg_addr: %d\n\r", U1_SW_SC_DV0+slot-1);
		 }
}



