📄 l1tm_cust.c
字号:
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 + -