⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l1tm_cust.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
    case CFG_WRITE_RF_CFG:   config_ffs_write('F'); break;
    case CFG_WRITE_TX_CAL:   config_ffs_write('t'); break;
    case CFG_WRITE_TX_CFG:   config_ffs_write('T'); break;
    case CFG_WRITE_RX_CAL:   config_ffs_write('r'); break;
    case CFG_WRITE_RX_CFG:   config_ffs_write('R'); break;
    case CFG_WRITE_SYS_CAL:  config_ffs_write('s'); break;
    case CFG_WRITE_SYS_CFG:  config_ffs_write('S'); break;
    default:
      tm_return->status = E_BADINDEX;
    }
}

void Cust_tm_special_param_write(T_TM_RETURN *tm_return, WORD16 index, UWORD16 value)
{
#if 0  //glowing,2004-06-17, comment
  tm_return->size = 0;
  tm_return->index = index;
  tm_return->status = E_NOSYS;
#endif
//glowing,2004-06-17,import from M188
	volatile int status;
	extern void SetUserBackGround(short value);	//chenjun add 2003-01-24

	switch ( index )
	{
		case LCD_SWITCH://lcd on/off; value=1 is lcd on, PASS, Ref. l1tm_cust_add.c
			ctrlcd(value);
			break;

			//case LED_SWITCH://led on/off; value=1 is led on
			//	ctrled(value);
			//	break;
		case BACKLIGHT_SWITCH://backlight on/off; value=1 is on, PASS
			ctrbacklight(value);
			break;
		case VIBRATOR_CHECK://vibrator on/off; value =1 is on, PASS
			ctrvibrator(value);
			break;
			//case BUZZER_CHECK://buzzer on/off; value =1 is on, No buzzer in MI188, Jeffrey, 04/01/04
			//	ctrbuzzer(value);
			//	break;
		case TELL_SIMPHB_NUM:
			tell_simphb_num(value);
			g_pcsyncstatus=1;
			break;
		case SET_SLEEPMODE:
			power_down_config(value, UWIRE_CLK_CUT);
			break;
		case TELL_SMSFILE_NUM:
			tell_smsFile_num(value);
			g_pcsyncstatus=1;
			break;
		case DEL_SIM_SMS:
			del_sim_sms(value);
			g_pcsyncstatus=1;
			break;
		case CHANGE_SIM_SMS:
			change_sim_sms(value);
			g_pcsyncstatus=1;
			break;
		case TELL_NVMPHB_NUM:
			tell_nvmphb_num(value);
			g_pcsyncstatus=1;
			break;
		case TRACE_AUDIOTASK://wms added 03-03-20
			trace_audio_task();
			break;

		case WRITE_TESTNUMBER: // Jeffrey, for production test, 04/06/04
			{
				short ret;
				ret = write_TestNumber(value);
				if ( ret )
				{
					tm_return->size = 0;
					tm_return->index = index;
					memcpy(tm_return->result, (UWORD8 *)&ret, 2);
					tm_return->status = E_NOSUBSYS;
					return;
				}
				tm_return->size = 2;
				memcpy(tm_return->result, (UWORD8 *)&value, 2);
				tm_return->index = index;
				tm_return->status = E_OK;
			}
			break;


/*
		  //chenjun add 2003-01-23  begin  
		case SET_USUAL_RING:
			
			SetEnvironRing(0,(short)value);
			break;
		
		case SET_OUTDOOR_RING:
			SetEnvironRing(1,(short)value);
			break;
		
		case SET_MEETING_RING:
			SetEnvironRing(2,(short)value);
			break;
		
		case SET_INCAR_RING:
			SetEnvironRing(3,(short)value);
			break;
		
		   
		  //chenjun add 2003-01-23  over	
		*/  
		case SET_USER_BACK:
			
		 //SPI_WriteTX_MSB(0x0A << 6 |TOGBR1);      // Initialize transmit register. This transmission
 		 //SPI_StartWrite();                        // enables selected OMEGA modules  
 		 //glowing,2004-06-17, use the new spi api
#if 0 		 
		 SPI_WRITE_TX_MSB(0x0A << 6 | TOGBR1);      // Initialize transmit register. This transmission
 		 SPI_START_WRITE                        // enables selected OMEGA modules  
		 while(((status = Spi->SPI_CTRL_STAT_UN.SPI_CTRL_STAT_ST.SPI_REG_STATUS) & WE_ST) == 0);
#else
		 ABB_Write_Register_on_page( PAGE0, TOGBR1, 0x0A );
#endif

         ABB_UlMute(0);
         ABB_DlMute(0);
		 ABB_SideTone(175);
		 dspl_TextOut(0, 0, 0, "loop audio test");
		SetUserBackGround(value);
		break;
/* glowing,2004-06-17, we doesn't define DRVPCTMTRACE.
 * some of the following functions doesn't define
 * in this version, so let it be.
 */
#ifdef DRVPCTMTRACE    
		case TRACE_CMD:
			switch ( value )
			{
				/*0~9 for hall*/
				case 0:	//hallstatusflag
					TraceHallVarvalue();
					break;
				case 1:	//hall mask register
					TraceHallMaskRegister();
					break;
				case 2:	//hall status register
					TraceHallOnOff();
					break;
				case 3:	//hall 
					AI_MaskIT(2);
					break;
				case 4:	//hall 
					AI_UnmaskIT(2);
					break;
				case 5:	//hall 
					break;
				case 6:	//hall 
					break;
				case 7:	//hall 
					break;
				case 8:	//hall 
					break;
				case 9:	//hall 
					break;

					/*10~19 for charger*/
				case 10: //pwr_status
					TracePwrstatus();
					break;
				case 11: //外部中断mask
					break;
				case 12: //mmi电池信息
					break;
				case 13: //电池电压
					RivieraTrace_Chunhui("_GetBatteryVoltage(1)=", GetBatteryVoltage(1));
					break;
				case 14: //充电电压
					GetChargerVoltage();
					break;
				case 15: //充电电流
					GetChargerCurrent();
					break;
				case 16: //charger
					break;
				case 17: //charger 
					break;
				case 18: //charger
					break;
				case 19: //charger 
					break;

					/*20~29 for keypad*/
				case 20: //keypad mask
					TraceKeypadMaskRegister();
					break;
				case 21: //keypad
					RivieraTrace_Chunhui("kpd_scan_keypad", kpd_scan_keypad());
					break;
				case 22: //keypad
					Trace_kbd_gpio_int();
					break;
				case 23: //keypad
					kpd_acknowledge_key_pressed();
					break;
				case 24: //keypad
					AI_MaskIT(1);
					break;
				case 25: //keypad 
					Set_g_interrupt_to_zero();
					break;
				case 26: //keypad 
					Trace_g_interrupt_value();
					break;
				case 27: //keypad 
					break;
				case 28: //keypad 
					break;
				case 29: //keypad
					break;

					/*30~39 for lamp*/
				case 30: //lamp
					break;
				case 31: //lamp
					break;
				case 32: //lamp
					break;
				case 33: //lamp
					break;
				case 34: //lamp
					break;
				case 35: //lamp
					break;
				case 36: //lamp 
					break;
				case 37: //lamp 
					break;
				case 38: //lamp 
					break;
				case 39: //lamp 
					break;

					/*40~49 for lcd*/
				case 40: //lcd not use ,instead of using se 10 by ganch
					//倒置				
					break;
				case 41: //lcd
					//硬件reset
					RivieraTrace_Chunhui("_now call resetlcd()_",0);
					ResetLCD();
					break;
				case 42: //lcd
					//lcd软件reset
					RivieraTrace_Chunhui("_now call ColorLcd_Init(1)_",0);              
					ColorLCD_Init(1);
					break;
				case 43: //lcd
					//看初始化lcd是否成功
					break;
				case 44: //lcd
					break;
				case 45: //lcd 
					break;
				case 46: //lcd 
					break;
				case 47: //lcd 
					break;
				case 48: //lcd 
					break;
				case 49: //lcd
					break;

					/*50~59 for flash*/
				case 50: //flash
					break;
				case 51: //flash
					break;
				case 52: //flash
					break;
				case 53: //flash
					break;
				case 54: //flash 
					break;
				case 55: //flash 
					break;
				case 56: //flash 
					break;
				case 57: //flash 
					break;
				case 58: //flash
					break;
				case 59: //flash
					break;
				case 60:
					MmiTrace("60");
					print_mfw_link();
					break;
				default:
					break;
			}
			break;



#endif
		case CALL_EMERGENCY:
			if(value == 1)	/* dialling 112 */
			{
				/*if(sAT_Dn(0, "112", -1, -1, 0) != 1)*/	/* return 1 if dialling in progress */
				if(cm_mo_call("112", 1) != 1)
				{					
					tm_return->index = index;
					tm_return->size = 0;
					tm_return->status = E_NOSYS;
					return;
				}
			}
			else	/* hang up */
			{
				cm_disconnect(1);
			}
			break;
		case SET_ENCRYPT_KEY:
			{
			short ret;
/* 2004/06/08, zhq ,commit it because it is for test only.
			char tmpstr[50] = {0};
			char tmpstr2[50] = {0};
			strcpy(tmpstr, "value=");
			Num2Str(value, tmpstr2);
			strcat(tmpstr,tmpstr2);
			dspl_TextOut(0, 0, 0, tmpstr);
*/
			ret = Set_Encrypt_Key(value);
			if ( ret )
				{
					tm_return->size = 0;
					tm_return->index = index;
					memcpy(tm_return->result, (UWORD8 *)&ret, 2);
					tm_return->status = E_NOSUBSYS;
					return;
				}
				tm_return->size = 2;
				memcpy(tm_return->result, (UWORD8 *)&value, 2);
				tm_return->index = index;
				tm_return->status = E_OK;
			}
			break;
		case AUDIO_LOOP:
			if(value == 1)
			Audio_Loop_Test_pctm_start();
			else
			Audio_Loop_Test_pctm_stop();
			break;
		case SPEAK_RING:
			if(value == 1)
			Speaker_Vibrator_Test_Start();
			else
			Speaker_Vibrator_Test_Stop();
			break;
		case SET_MAINBOARD_TYPE:
			{
/* 2004/06/08, zhq, add for production test purpose. 
0 indicate 188 serial of mainboard.
1 indicate 288 serial of mainboard.
2 indicate 388 serial of mainboard.
3 indicate 588 serial of mainboard.
etc.
*/
			short ret;
			ret = Set_MainboardType(value);
			if ( ret )
				{
					tm_return->size = 0;
					tm_return->index = index;
					memcpy(tm_return->result, (UWORD8 *)&ret, 2);
					tm_return->status = E_NOSUBSYS;
					return;
				}
				tm_return->size = 2;
				memcpy(tm_return->result, (UWORD8 *)&value, 2);
				tm_return->index = index;
				tm_return->status = E_OK;
			}
			break;

			

		default:
			break;
	}

#ifdef DRVPCTMTRACE  //ljq add for trace_pctm command 2003/1/8 according to ganch

	tm_return->index = index;
	memcpy(tm_return->result, (UWORD8 *)&value, 1);
	tm_return->size = 1;

	tm_return->status = E_OK;

#else  
	MmiTrace("return ok");
	tm_return->size = 0;
	tm_return->index = index;
	tm_return->status = E_OK;
#endif  	

//glowing,2004-06-17,end of import
}

void Cust_tm_special_param_read(T_TM_RETURN *tm_return, WORD16 index)
{
#if 0
  tm_return->size = 0;
  tm_return->index = index;
  tm_return->status = E_NOSYS;
#endif
//glowing,2004-06-17,import from M188
	extern void GetUserBackGround(short*  value); //chenjun add 2003-01-24
	extern char *ver;
	volatile UWORD16 value=0;
	
	switch ( index )
	{
		case SIM_CHECK://check sim card ; if check sim card ok , return 1 
			value = checksim(); 
			break;
		case NETWORK_CHECK://check network ; if network  ok , return 1 
			value = checknetavail();
			break;
		case READ_SIM_PHB:
			value= read_sim_phb();
			g_pcsyncstatus=1;
			break;
		case WRITE_SIM_PHB:
			value=write_sim_phb();
			g_pcsyncstatus=1;
			break;
		case READ_SIM_SMS:
			value=read_sim_sms();
			g_pcsyncstatus=1;
			break;
		case READ_NEW_SMS:
			value=read_new_sms();
			g_pcsyncstatus=1;
			break;
		case SEND_SMS:
			value=send_sms();
			g_pcsyncstatus=1;
			break;

		case READ_TESTNUMBER://Jeffrey, read test number for production test, 04/06/04
			{			
				int ret = read_TestNumber(&value);
				
				if ( ret < 0 )
				{
					tm_return->size = 0;
					tm_return->index = index;
					memcpy(tm_return->result, &ret, sizeof(int));
					tm_return->status = E_AGAIN;
					return;
				}			
			}
			break;

		case GET_USER_BACK:
			{
				char v[12];
				GetUserBackGround((short*)&value);
				sprintf(v, "User BG=%d", value);
				dspl_TextOut(0, 0, 0, v);
			}
			break;//chenjun 0227 add break
		case  READ_PBOPTION:
			flash_PBOtherRead("PBOption");
			break;	 //chenjun add 0227 	
		case GET_ENCRYPT_KEY:
			{
			short ret;
			char tmpstr[50] = {0};
			char tmpstr2[50] = {0};
			
			ret = Get_Encrypt_Key(&value);

/* 2004/06/08, zhq ,commit it because it is for test only.
			strcpy(tmpstr, "value=");
			Num2Str(value, tmpstr2);
			strcat(tmpstr,tmpstr2);
			dspl_TextOut(0, 0, 0, tmpstr);
*/
			tm_return->size = 2;
			memcpy(tm_return->result, (UWORD8 *)&value, 2);
			tm_return->index = index;
			tm_return->status = E_OK;
			}
			break;
		case GET_MAINBOARD_TYPE:
		{
/* 2004/06/08, zhq, add for production test purpose. 
0 indicate 188 serial of mainboard.
1 indicate 288 serial of mainboard.
2 indicate 388 serial of mainboard.
3 indicate 588 serial of mainboard.
etc.
*/			
			int ret ;
			char tmpstr[50] = {0};
			char tmpstr2[50] = {0};
			
			ret = Get_MainboardType(&value);

/* 2004/06/08, zhq ,commit it because it is for test only.
			strcpy(tmpstr, "value=");
			Num2Str(value, tmpstr2);
			strcat(tmpstr,tmpstr2);
			dspl_TextOut(0, 0, 0, tmpstr);
*/
			if ( ret < 0 )
			{
				tm_return->size = 0;
				tm_return->index = index;
				memcpy(tm_return->result, &ret, sizeof(int));
				tm_return->status = E_AGAIN;
				return;
			}			
		}
			break;
		default:
			tm_return->index = index;
			tm_return->status = E_OK;
			tm_return->size = strlen(ver);
			memcpy((void*)tm_return->result, (void*)ver, tm_return->size);
			return;
			break;
	}

	tm_return->index = index;
	memcpy(tm_return->result, (UWORD8 *)&value, 2);
	tm_return->size = 2;

	tm_return->status = E_OK;

//glowing,2004-06-17,end of import

}

void Cust_tm_special_table_write(T_TM_RETURN *tm_return, WORD8 index, UWORD8 size, UWORD8 table[])
{
#if 0
  tm_return->size = 0;
  tm_return->index = index;
  tm_return->status = E_NOSYS;
#endif
//glowing,2004-06-17,import from M188
	extern void SetRingAlarmGroupRing( unsigned char data[]); //chenjun add 2003-01-23

	WORD8 coef_no;
	WORD16 *addr;
	WORD16 data;
	extern T_L1A_L1S_COM l1a_l1s_com; // Get access to DSP configuration
	extern T_L1S_DSP_COM l1s_dsp_com; // Get access to DSP configuration

	int nRetval;
	UWORD16 value=0;
	UWORD32 Reg;
	volatile UWORD16        *pReg;

	tm_return->size = 0;
	tm_return->index = index;
	tm_return->status = E_NOSYS;



	switch ( index )
	{
		//by xmzhou to test audio(FIR,echo) according to Jesper--------------------------
		case 1:// PCTM command to update DL FIR: STW 1 [coef 1] [coef 2] .. [coef 31]
			{  // First initialize PCTM by writing: STW -s 1 "%31[%y %]"
				if ( size == (31*2) )
				{
					for ( coef_no=0; coef_no<31; coef_no++ )
#if (DSP == 33)
						l1s_dsp_com.dsp_param_ptr->a_fir31_downlink[coef_no] = (table[coef_no*2+1]<<8) | table[coef_no*2];
#else
//glowing,2004-06-17,modify
//						l1s_dsp_com.dsp_ndb_ptr->a_fir31_downlink[coef_no] = (table[coef_no*2+1]<<8) | table[coef_no*2];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -