static void lge_ats_update_atcmd_state(char *cmd, int state) { #if defined (CONFIG_LGE_SUPPORT_AT_CMD) struct ats_data *data = &lge_ats_data; if(!data->atdev) data->atdev = atcmd_get_dev(); if(data->atdev) update_atcmd_state(data->atdev, cmd, state); #endif }
// at_param shall be ONLY INTERGER, do not (float / pointer / string...) static int dsatHandleAT_ARM11(uint32_t at_cmd, uint32_t at_act, uint32_t at_param,struct msm_rpc_server *server) { int result = HANDLE_OK; #ifdef USE_REPLY_RETSTRING int loop = 0; #endif char ret_string[MAX_STRING_RET]; uint32_t ret_value1 =0; uint32_t ret_value2 = 0; memset (ret_string, 0, sizeof(ret_string)); switch (at_cmd) { // example code case ATCMD_FRST: { if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; sprintf(ret_string, "edcb"); ret_value1 = 10; ret_value2 = 20; } break; case ATCMD_SWV: { } break; case ATCMD_AVR: /* 45 */ { //printk("#### ATCMD_AVR ###### Act: 0x%x, Param: 0x%x\n", at_act, at_param); printk("\n[kschoi] ***** ATCMD_AVR key = %d : rpc_server_misc.c",at_param); lge_atcmd_report_key(1, at_param); } break; case ATCMD_EMT: //46 { ret_value1 = external_memory_test(); } break; case ATCMD_NOT_ATMCD_EARSENSE: { printk(" ****************** ATCMD_NOT_ATMCD_EARSENSE ****************** \n"); printk(" ****************** headset_inserted [%d] ****************** \n",headset_inserted); ret_value1 = headset_inserted; break; } case ATCMD_FRSTSTATUS: if ( at_act == ATCMD_ACTION ) ret_value1 = set_kernel_factory_reset_status(at_param); else ret_value1 = get_kernel_factory_reset_status(); break; case ATCMD_MOT: // 71 { #if 1 // def CONFIG_ANDROID_VIBRATOR if (at_act == ATCMD_ACTION){ ret_value1 = is_vib_state(); // Check vibrator state } else if (at_act == ATCMD_ASSIGN) { if (at_param== 1) { // vibrator_set(100); vibrator_enable(); // Enable vibrator ret_value1 = 1; // "MOTOR ON" } else { vibrator_disable(); // Disabe vibrator printk("#### ATCMD_MOT 0###### Act: 0x%x, Param: 0x%x\n", at_act, at_param); ret_value1 = 0; // "MOTOR OFF" } } else #endif { result = HANLDE_FAIL; } } break; case ATCMD_FKPD: // 33 { if (at_act == ATCMD_ASSIGN) { ret_value1 = 1; at_fkpd_cfg(1/*ENABLE FKPD KEY INPUT*/, at_param/*AT INPUT KEY VALUE*/); } else if (at_act == ATCMD_QUERY){ //JUST RETURN OK ret_value1 = 1; } else { result = HANLDE_FAIL; } } break; case ATCMD_GKPD: // 34 { if (at_act == ATCMD_ACTION) { ret_value1 = at_gkpd_cfg(0/* 0 = READ GKPD*/,0/* READ GKPD STATE*/); //READ GKPD STATE } else if (at_act == ATCMD_ASSIGN) { if (at_param== 1) { at_gkpd_cfg(1/*WRITE GKPD*/,1/*WRITE TO SET GKPD BUFF*/); //SET GKPD STATE ret_value1 = 1; // "GKPD ON" } else { at_gkpd_cfg(1/*WRITE GKPD*/,0/*DISABLE GKPD BUFF*/); //DISABLE GKPD STATE ret_value1 = 0; // "GKPD OFF" } } else if (at_act == ATCMD_QUERY) { ret_value1 = at_gkpd_cfg(0/*READ GKPD*/,1/*READ GKPD BUUFERED VALUE*/); //READ A GKPD BUUFER VALUE } else { result = HANLDE_FAIL; } } break; case ATCMD_BOFF: // 58 { // To use AT%LCD, uncomment this. #if defined(CONFIG_MACH_MSM7X27_SWIFT) int fd; char buf = '0'; mm_segment_t oldfs; oldfs = get_fs(); set_fs(get_ds()); fd = sys_open((const char __user *) "/sys/devices/virtual/backlight/rt9393/brightness", O_WRONLY | O_CREAT | O_TRUNC, 0777); if (fd < 0) { break; } sys_write(fd, &buf, sizeof(char)); sys_close(fd); set_fs(oldfs); #endif #ifdef CONFIG_BACKLIGHT_EVE lge_atcmd_boff(); #endif ret_value1 = 1; } break; case ATCMD_FC: // 59 if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; #ifdef CONFIG_ANDROID_HALL_IC if (is_slide_open()== 0) { set_slide_open(1); // close slide ret_value1 = 1; // "FOLDER CLOSE OK" } else { ret_value1 = 0; // "FOLDER IS ALREADY CLOSED" } #endif break; case ATCMD_FO: // 60 if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; #ifdef CONFIG_ANDROID_HALL_IC if (is_slide_open() == 0) { ret_value1 = 1; // "FOLDER IS ALREADY OPEN" } else { set_slide_open(0); // open slide ret_value1 = 0; // "FOLDER OPEN OK" } #endif break; #if 1 // defined (CONFIG_MACH_EVE)-comment case ATCMD_VLC: //36 if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; if (atpdev != NULL){ update_atcmd_state(atpdev, "vlc", at_param); //state is up? down? } else { printk("\n[%s] error vlc", __func__ ); } break; case ATCMD_SPM: //40 if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; if (atpdev != NULL){ update_atcmd_state(atpdev, "spm", at_param); //state is up? down? } else { printk("\n[%s] error spm", __func__ ); } break; case ATCMD_ACS: if ( at_param != 0 ) mdelay(1000); break; case ATCMD_MPT: //43 if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; if (atpdev != NULL){ update_atcmd_state(atpdev, "mpt", at_param); //state is up? down? mdelay (1000); } else { printk("\n[%s] error mpt", __func__ ); } break; case ATCMD_FMR: //42 printk("\n[rpc_server_misc] ATCMD_FMR"); if(at_act != ATCMD_ACTION) result = HANLDE_FAIL; if (atpdev != NULL){ update_atcmd_state(atpdev, "fmr", at_param); //state is up? down? } else { printk("\n[%s] error fmr", __func__ ); } break; #endif case ATCMD_LCD: /* 69 */ { // To use AT%LCD, uncomment this. lge_atcmd_report_key(ATCMD_LCD_REPORTKEY, at_param); ret_value1 = 1; } break; case ATCMD_CAM: /* 70 */ { //printk("#### ATCMD_CAM ###### Act: 0x%x, Param: 0x%x\n", at_act, at_param); printk("\n[kschoi] ***** ATCMD_CAM key = %d: rpc_server_misc.c",at_param); lge_atcmd_report_key(0, at_param); } break; default : result = HANDLE_ERROR; break; } // give to RPC server result ///////////////////////////////////////////////////////////////// #ifdef USE_REPLY_RETSTRING for(loop = 0; loop < MAX_STRING_RET ; loop++) { server->retvalue.ret_string[loop]= (AT_STR_t)(ret_string[loop]); } server->retvalue.ret_string[MAX_STRING_RET-1] = 0; server->retvalue.ret_value1 = ret_value1; server->retvalue.ret_value2 = ret_value2; #endif ///////////////////////////////////////////////////////////////// return result; }
int lge_ats_handle_atcmd(struct msm_rpc_server *server, struct rpc_request_hdr *req, unsigned len, void (*update_atcmd_state)(char *cmd, int state) ) { struct rpc_ats_atcmd_args *args = (struct rpc_ats_atcmd_args *)(req + 1); int result = HANDLE_OK; char ret_string[MAX_STRING_RET]; uint32_t ret_value1 =0; uint32_t ret_value2 = 0; uint32_t at_cmd; uint32_t at_act; uint32_t at_param; #ifdef CONFIG_LGE_BROADCAST /* mtv_blt_mode : 1 mtv_av_mode : 0*/ static int mtv_blt_mode = 0; struct broadcast_mtv_sig_info tdmbdata; #endif at_cmd = be32_to_cpu(args->at_cmd); at_act = be32_to_cpu(args->at_act); at_param = be32_to_cpu(args->at_param); printk(KERN_INFO "%s: at_cmd = %d, at_act=%d, at_param=%d:\n", __func__, args->at_cmd, args->at_act,args->at_param); memset(server->retvalue.ret_string, 0, sizeof(server->retvalue.ret_string)); memset (ret_string, 0, sizeof(ret_string)); switch (at_cmd) { case ATCMD_ACS: //31 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("acs", at_param); //state is up? down? break; case ATCMD_VLC: //36 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("vlc", at_param); //state is up? down? break; case ATCMD_SPM: //40 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("spm", at_param); //state is up? down? break; case ATCMD_MPT: //43 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("mpt", at_param); //state is up? down? break; case ATCMD_FMR: //42 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("fmr", at_param); //state is up? down? break; /*[LGE_CHANGE_S][Camera][[email protected] 2010-05-26 : AT Command AT_CAM AT_AVR */ case ATCMD_AVR: //45 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("avr", at_param); //state is up? down? break; case ATCMD_CAM: //70 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("cam", at_param); //state is up? down? break; /*[LGE_CHANGE_E[Camera][[email protected] 2010-05-26 : AT Command AT_CAM AT_AVR */ case ATCMD_EMT: // 46 ret_value1 = external_memory_test(); break; case ATCMD_FC: // 59 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; ret_value1 = 0; break; case ATCMD_FO: // 60 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; ret_value1 = 0; break; //LGE_UPDATE_S [email protected] 2010-06-21, add AT%FLIHGT case ATCMD_FLIGHT: // 82 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; wirte_flight_mode(at_param); update_atcmd_state("flight", at_param); //state is up? down? break; //LGE_UPDATE_E [email protected] 2010-06-21, add AT%FLIHGT case ATCMD_MMCFORMAT: // 129 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; //LGE_UPDATE_S FS 2011-03-22 if(!external_memory_test()) ret_value1 = 0; else { update_atcmd_state("mmcformat", 0); update_atcmd_state("mmcformat", 1); update_atcmd_state("mmcformat", 9); ret_value1 = 1; } //LGE_UPDATE_E FS 2011-03-22 break; //LG_BTUI_NV : Get_BDADDR - [email protected] case ATCMD_BTAD: //52 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; printk(KERN_INFO "[BTUI] %s: at_cmd => ATCMD_BTAD\n", __func__); atcmd_get_dev()->state = 1; update_atcmd_state("btad", at_param); break; //LG_BTUI_NV //LG_BTUI_DUT : use brcm_patchram_plus [S] case ATCMD_BTTM: //53 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; printk(KERN_INFO "[BTUI] %s: at_cmd => ATCMD_BTTM\n", __func__); update_atcmd_state("bttm", at_param); if(at_param==3) msleep(1000); // 1sec delay else msleep(5000); // 5sec delay break; //LG_BTUI_DUT : use brcm_patchram_plus [E] #ifdef CONFIG_LGE_BROADCAST case ATCMD_MTV: //150 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; printk(KERN_INFO "[MTV] %s: at_cmd => ATCMD_MTV\n", __func__); if(at_param == 71) { printk(KERN_INFO "[MTV] AV Test On process\n"); update_atcmd_state("mtv", at_param); mtv_blt_mode = 0; } else if(at_param == 1) { if(mtv_blt_mode == 1) { printk(KERN_INFO "[MTV] BLT Off process\n"); mtv_blt_mode = 0; broadcast_tdmb_blt_close(); broadcast_tdmb_blt_power_off(); } else { printk(KERN_INFO "[MTV] AV Test Off process\n"); update_atcmd_state("mtv", at_param); } } else { if((at_param > 71) &&(at_param <= 133)) { printk(KERN_INFO "[MTV] BLT On\n"); broadcast_tdmb_blt_power_on(); broadcast_tdmb_blt_open(); broadcast_tdmb_blt_tune_set_ch(at_param); mtv_blt_mode = 1; } else if((at_param == 2)||(at_param == 3) || (at_param == 4)||(at_param == 5)) { broadcast_tdmb_blt_get_sig_info((void*)&tdmbdata); ret_value1 = tdmbdata.msc_ber; ret_value2 = tdmbdata.tp_err_cnt; printk(KERN_INFO "[MTV] BLT get ber ber = %d, tp_err_cnt = %d\n", ret_value1, ret_value2); } else { printk(KERN_INFO "[MTV] BLT Error range\n"); //result = HANDLE_ERROR; } } break; #endif default : result = HANDLE_ERROR; break; } /* give to RPC server result */ strncpy(server->retvalue.ret_string, ret_string, MAX_STRING_RET); server->retvalue.ret_string[MAX_STRING_RET-1] = 0; server->retvalue.ret_value1 = ret_value1; server->retvalue.ret_value2 = ret_value2; ///////////////////////////////////////////////////////////////// if(result == HANDLE_OK) result = RPC_RETURN_RESULT_OK; else result = RPC_RETURN_RESULT_ERROR; return result; }
int lge_ats_handle_atcmd(struct msm_rpc_server *server, struct rpc_request_hdr *req, unsigned len, void (*update_atcmd_state)(char *cmd, int state) ) { struct rpc_ats_atcmd_args *args = (struct rpc_ats_atcmd_args *)(req + 1); int result = HANDLE_OK; char ret_string[MAX_STRING_RET]; uint32_t ret_value1 =0; uint32_t ret_value2 = 0; uint32_t at_cmd; uint32_t at_act; uint32_t at_param; at_cmd = be32_to_cpu(args->at_cmd); at_act = be32_to_cpu(args->at_act); at_param = be32_to_cpu(args->at_param); printk(KERN_INFO "%s: at_cmd = %d, at_act=%d, at_param=%d:\n", __func__, args->at_cmd, args->at_act,args->at_param); memset(server->retvalue.ret_string, 0, sizeof(server->retvalue.ret_string)); memset (ret_string, 0, sizeof(ret_string)); switch (at_cmd) { case ATCMD_ACS: //31 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("acs", at_param); //state is up? down? break; case ATCMD_VLC: //36 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("vlc", at_param); //state is up? down? break; case ATCMD_SPM: //40 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("spm", at_param); //state is up? down? break; case ATCMD_MPT: //43 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("mpt", at_param); //state is up? down? break; case ATCMD_FMR: //42 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("fmr", at_param); //state is up? down? break; /*[_S][Camera][kwangsoo.park 2010-05-26 : AT Command AT_CAM AT_AVR */ case ATCMD_AVR: //45 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("avr", at_param); //state is up? down? break; case ATCMD_CAM: //70 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; update_atcmd_state("cam", at_param); //state is up? down? break; /*[_E[Camera][kwangsoo.park 2010-05-26 : AT Command AT_CAM AT_AVR */ case ATCMD_EMT: // 46 ret_value1 = external_memory_test(); break; case ATCMD_FC: // 59 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; ret_value1 = 0; break; case ATCMD_FO: // 60 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; ret_value1 = 0; break; //LGE_UPDATE_S ins.lee 2010-06-21, add AT%FLIHGT case ATCMD_FLIGHT: // 82 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; wirte_flight_mode(at_param); update_atcmd_state("flight", at_param); //state is up? down? break; //LGE_UPDATE_E ins.lee 2010-06-21, add AT%FLIHGT case ATCMD_MMCFORMAT: // 129 if(at_act != ATCMD_ACTION) result = HANDLE_FAIL; //LGE_UPDATE_S E720 BCPARK 2010-09-06 if(!external_memory_test()) ret_value1 = 0; else { update_atcmd_state("mmcformat", 0); update_atcmd_state("mmcformat", 1); update_atcmd_state("mmcformat", 9); ret_value1 = 1; } //LGE_UPDATE_E E720 BCPARK 2010-09-06 break; default : result = HANDLE_ERROR; break; } /* give to RPC server result */ strncpy(server->retvalue.ret_string, ret_string, MAX_STRING_RET); server->retvalue.ret_string[MAX_STRING_RET-1] = 0; server->retvalue.ret_value1 = ret_value1; server->retvalue.ret_value2 = ret_value2; ///////////////////////////////////////////////////////////////// if(result == HANDLE_OK) result = RPC_RETURN_RESULT_OK; else result = RPC_RETURN_RESULT_ERROR; return result; }