int server_tx_sim_sec_disable_facility(void)
{
	unsigned char *p = 0;
	LXT_MESSAGE packet;

	SIM_DEBUG("\n");
	SIM_DEBUG("pin lock disable mode - it means key not needed(ready) \n");

	TAPIMessageInit(&packet);

	packet.data	=	malloc(2);
	p			=	(unsigned char *)(packet.data);

	packet.group	=	GSM_SIM;
	packet.length	=	1 + 1 ;
	packet.action	=	GSM_SIM_FACILITY_RES;

	//server_sec_set_sec_status(GSM_SIM_READY);
	//set_current_state( STATE_SIM_READY, GSM_SEC_CMD, GSM_SEC_PIN_STATUS);

	server_tx_sim_sec_pin_status_noti(STATE_ON, STATE_SIM_READY);

	p[0]	=	0;
	p[1]	=	GSM_SIM_READY;

	/*	++ 2008-09-29
	*/
	//FuncServer->Cast(&GlobalPS, LXT_ID_CLIENT_EVENT_INJECTOR, &packet);

	if(packet.data)
		free(packet.data);

	return 1;
}
int server_tx_sim_sec_enable_facility(int status)
{
	unsigned char *p = 0;
	LXT_MESSAGE packet;

	SIM_DEBUG("\n");
	SIM_DEBUG("sim status =[%d]\n", status);

	TAPIMessageInit(&packet);

	packet.data	=	malloc(2);
	p			=	(unsigned char *)(packet.data);

	packet.group	=	GSM_SIM;
	packet.length	=	1 + 1;
	packet.action	=	GSM_SIM_FACILITY_RES;

	p[0]	=	1;
	p[1]	=	status;

	switch (status)
	{
	/*
		case GSM_SIM_READY :
			set_current_state(STATE_SIM_READY, GSM_SEC_CMD, GSM_SEC_PIN_STATUS, 0 );
		break;
	*/
		case GSM_SIM_PIN_REQ_STATE :
			server_tx_sim_sec_pin_status_noti(STATE_ON, STATE_SIM_PIN);
		break;

		case GSM_SIM_PUK_REQ :
			server_tx_sim_sec_pin_status_noti(STATE_ON, STATE_SIM_PUK);
		break;

		case GSM_SIM_FRIZEN :
			server_tx_sim_sec_pin_status_noti(STATE_ON, STATE_SIM_FRIZEN);
		break;

		case GSM_SIM_NO_SIM :
			server_tx_sim_sec_pin_status_noti(STATE_ON, STATE_SIM_NO_SIM);
		break;

		default :
			SIM_DEBUG("No handled sim status=[%x]", status);
		break;
	}

	//server_tx_sim_sec_pin_status_noti();

	FuncServer->Cast(&GlobalPS, LXT_ID_CLIENT_EVENT_INJECTOR, &packet);

	if(packet.data)
		free(packet.data);

	return 1;
}
Example #3
0
bool Sim::init(const ExprPtrT& g, std::string& err, int p)
{
   SIM_DEBUG("Sim::init() g=", g)
   SIM_DEBUG("Sim::init() p=", p)
   SIM_DEBUG("Sim::init() proc=", proc)
   SIM_DEBUG("Sim::init() global=", global)

   global = g;
   proc = p;
   iter = 0;
   
   init_result_file = true;
   
   try 
   {
      global->evaluate(&scope);
      n_iters = ExprIterator::count_iterations(&scope);
   }
   catch (const ExpressionError& exprerr)
   {
      SIM_DEBUG("Sim::init() error while evaluating global:", exprerr.what())
      err = std::string("Parameters could not be initialized: " + exprerr.what());
      return false;
   };

   SIM_DEBUG("Sim::init() sucess! n_iters=", n_iters)
   SIM_DEBUG("Sim::init() sucess! scope=", scope.info())
   return true;
};
int server_tx_sim_init_start(void)
{
	int status;

	SIM_DEBUG("\n");
	//not used
	//server_tx_sim_sec_card_type_noti();

	//load from sim db
	db_sim_sec_restore(VGSM_SIMTypeLoad);

	status = server_sec_get_sec_status();

	SIM_DEBUG("boot time sim status =[%x]\n", status);

	if(status	==	GSM_SIM_READY) {
		server_tx_sim_sec_disable_facility();
	}
	else {
		server_tx_sim_sec_enable_facility(status);
	}

	return 1;
}
Example #5
0
void Sim::signal(const SimSignal& sig, const std::string& str)
{
   SIM_DEBUG("proc="<<proc << " iter="<<iter, "signal="<<sig<<" msg="<<str)

   sim_send_signal(sig, iter, SIM_MPI_CNTRL);

   if (is_io_signal(sig))
   {
      sim_send_message(str, SIM_MPI_CNTRL);
   };

   if (is_throw_signal(sig))
   {
      throw sig;
   };
};
/**************************************090226*************************************************/
int oem_rx_sim_pb_exec_access_req(void* ptr_data, int data_len)
{
	unsigned char *p = (unsigned char*)(ptr_data);
	int sim_mode = p[0];				// action type or mode

	SIM_DEBUG("\n");
	switch(sim_mode)
	{
		case 0x03:	//TAPI_SIM_PB_ACCESS_MODE_EDIT:
			return server_rx_sim_pb_update_record("TelTapisimPBUpdateRecord");
		break;
		case 0x02:	//TAPI_SIM_PB_ACCESS_MODE_DEL:
			return server_rx_sim_pb_del_record("TelTapisimPBDeleteRecord");
		break;

	}
	return 0;
}
int server_tx_sim_sec_card_type_noti(void)
{
	int ret = 0;
	int data_size = 1;
	unsigned char *pdata = 0;

	SIM_DEBUG("\n");

	pdata = malloc(sizeof(unsigned char)*data_size);

	pdata[0] = GSM_SEC_SIM_3G;

	ret = oem_tx_sim_sec_card_type_noti(pdata, data_size);

	if( pdata )
		free( pdata );

	return ret;
}
int server_tx_sim_sec_get_db(SimSecurity *sim_sec)
{
	int length;
	LXT_MESSAGE packet;

	SIM_DEBUG("\n");

	TAPIMessageInit(&packet);

	length = 9+9+9+9+4+4+4+4+4+4+4+4; //68

	packet.data	=	malloc(sizeof(SimSecurity));
	packet.data	=	sim_sec;
	packet.group	=	GSM_SIM;
	packet.length	=	length ;
	packet.action	=	GSM_SIM_GET_SIM_DB_RES;

    	FuncServer->Cast(&GlobalPS, LXT_ID_CLIENT_EVENT_INJECTOR, &packet);

	if(packet.data)
		free(packet.data);

	return  1;
}
int server_tx_sim_info_get_db(unsigned char *sim_info, int len)
{
	int length;
	LXT_MESSAGE packet;

	SIM_DEBUG(" len_info : %d\n",len);

	TAPIMessageInit(&packet);

	//length = 9+9+9+9+4+4+4+4+4+4+4+4; //68
	length = len; //43

	packet.data	=	sim_info;
	packet.group	=	GSM_SIM;
	packet.length	=	length ;
	packet.action	=	GSM_SIMINFO_RES;

    	FuncServer->Cast(&GlobalPS, LXT_ID_CLIENT_EVENT_INJECTOR, &packet);

	if(packet.data)
		free(packet.data);

	return  1;
}
int oem_rx_sim_pb_get_capability_info(void* ptr_data, int data_len)
{
	SIM_DEBUG("\n");
	return server_rx_sim_pb_get_capability_info("TelTapiSimPbGet3GCapabilityInfo");
}
int oem_rx_sim_pb_get_storage_list_req(void* ptr_data, int data_len)
{
	SIM_DEBUG("\n");
	return server_rx_sim_pb_get_storage_list_req(ptr_data, data_len);
}
int oem_rx_sim_pb_get_entry_info_req(void* ptr_data, int data_len)
{
	SIM_DEBUG("\n");
	return server_rx_sim_pb_get_entry_info_req(ptr_data, data_len);
}
int oem_rx_sim_pb_set_access_req(void* ptr_data, int data_len)
{
	SIM_DEBUG("\n");
	return server_rx_sim_pb_set_access_req(ptr_data, data_len);
}
/* this API is for NOTIFICATION of SIM PIN STATUS	*/
int server_tx_sim_sec_pin_status_noti(STATE_TYPE before_state, STATE_TYPE current_state)
{
	int ret = 0;
	int data_size = 2;
	unsigned char *pdata = 0;

	int send_sim_init_msg	=	0;

//	STATE current;
//	STATE prev;

	SIM_DEBUG("\n");

	pdata = malloc(sizeof(unsigned char)*data_size);

//	get_current_state_machine( &current );
//	get_prev_state_machine( &prev );

//	SIM_DEBUG("STATE_TYPE(prev)=%d \n", STATE_TYPE(prev));

	switch(before_state)
	{
		//add STATE_STANDBY for test.
		case STATE_STANDBY :
		case STATE_ON:
		{
			switch(current_state)
			{
				case STATE_SIM_READY :
				{
					/*	lock disable일 경우 modem(vgsm)이 simulator로 보내줘야 할 NOTI
						1) GSM_SEC_LOCK_TYPE_READY
						2) GSM_SEC_SIM_INIT_COMPLETED
						3) GSM_SEC_PB_INIT_COMPLETED	- 현재 phonebook이 미구현 상태라 보내지 않음.
					*/
					pdata[0]	=	GSM_SEC_LOCK_TYPE_READY;
					pdata[1]	=	GSM_SEC_LOCK_KEY_UNLOCKED;
#if 0 //20110714 tmp 
					oem_tx_sim_sec_pin_status_noti(pdata, data_size);

					sleep(3);

					pdata[0]	=	GSM_SEC_SIM_INIT_COMPLETED;
					pdata[1]	=	GSM_SEC_LOCK_KEY_UNLOCKED;
					send_sim_init_msg	=	1;

				/*
					oem_tx_sim_sec_pin_status_noti(pdata, data_size);

					pdata[0]	=	GSM_SEC_PB_INIT_COMPLETED;
					pdata[1]	=	GSM_SEC_LOCK_KEY_UNLOCKED;
				*/
#endif
				}
				break;

				case STATE_SIM_PIN :
				{
	     				pdata[0]	=	GSM_SEC_LOCK_TYPE_SC;
					pdata[1]	=	GSM_SEC_LOCK_KEY_PIN;
				}
				break;

				case STATE_SIM_PUK :
				{
	     				pdata[0]	=	GSM_SEC_LOCK_TYPE_SC;
					pdata[1]	=	GSM_SEC_LOCK_KEY_PUK;
				}
				break;

				case STATE_SIM_FRIZEN :
				{
	     				pdata[0]	=	GSM_SEC_LOCK_TYPE_SC;
					pdata[1]	=	GSM_SEC_LOCK_KEY_PERM_BLOCKED;
				}
				break;

				case STATE_SIM_NO_SIM :
				{
	     				pdata[0]	=	GSM_SEC_LOCK_TYPE_NO_SIM;
					pdata[1]	=	GSM_SEC_LOCK_KEY_UNLOCKED;	//to be considered...
				}
				break;

				default :
					SIM_DEBUG("No handled current_state=[%d]\n",current_state);
					break;

			}
		}
		break;

		case STATE_SIM_PIN :
		case STATE_SIM_PUK :
		{
			switch(current_state)
			{
				case  STATE_SIM_PIN_OK :
				case  STATE_SIM_PUK_OK:
				{
					pdata[0]	=	GSM_SEC_SIM_INIT_COMPLETED;
					pdata[1]	=	GSM_SEC_LOCK_KEY_UNLOCKED;
					send_sim_init_msg	=	1;
				/*
					oem_tx_sim_sec_pin_status_noti(pdata, data_size);

					pdata[0]	=	GSM_SEC_PB_INIT_COMPLETED;
					pdata[1]	=	GSM_SEC_LOCK_KEY_UNLOCKED;
				*/
				}
				break;

				default:
					SIM_DEBUG("No handled current_state=[%d]\n",current_state);
					break;
			}
		}
		break;

		default:
		{
			SIM_DEBUG("No handled case in before_state = [%d]\n", before_state);
		}
		break;

	}

	ret	=	oem_tx_sim_sec_pin_status_noti(pdata, data_size);
	if( pdata )
		free( pdata );

	return ret;
}