示例#1
0
int main()
{
   SMSHOSTLIB_ERR_CODES_E RetCode = SMSHOSTLIB_ERR_OK;
   char Buffer[10];
		 
   RetCode = SmsLiteAdrInit( SMSHOSTLIB_DEVMD_CMMB, SmsLiteCmmbControlRxCallback, SmsLiteCmmbDataCallback );
   	if ( RetCode != SMSHOSTLIB_ERR_OK )
	{
		printf("xingyu[Test_Siano] Return err 0x%x\n",RetCode);              //init error
		return RetCode ;
	}
	else
             printf("xingyu[Test_Siano]SmsLiteAdrInit ok\n");


	SmsMsgData_ST* pStaticMsg = (SmsMsgData_ST*)(malloc(sizeof(SmsMsgData_ST)));	
	
	printf("Get version before FW downloading\n");
	PrepareGetVersion(pStaticMsg);
	SmsLiteAdrWriteMsg( pStaticMsg );                    //debug

	printf("Start to tune to frequency %d\n", CMMB_USER_FREQUENCY);
	PrepareCMMBTuneMsg(pStaticMsg, CMMB_USER_FREQUENCY);
	SmsLiteAdrWriteMsg( pStaticMsg );                    //debug


	OSW_TaskSleep(5000);
	printf("Start service %d\n", CMMB_USER_SERVICE);
	PrepareStartServiceMsg(pStaticMsg, CMMB_USER_SERVICE);
	SmsLiteAdrWriteMsg( pStaticMsg );                    //debug

	
	//OSW_TaskSleep(60000);
#if 0
      printf("[Test Siano] using hw\n");

   // driver loop back test, test driver working
      AdrLoopbackTest();
#else
    printf("xingyu[Test_Siano] waiting ............press 'c' stop.........\n ");

    while(1){
	fgets(Buffer, 10, stdin);
	if(Buffer[0] =='c')
		break;
    }
#endif


//driver terminate
       printf("xingyu[Test_Siano]SmsLiteAdrTerminate\n");
       SmsLiteAdrTerminate();
	   
  printf("xingyu[Test_Siano] ****************************** End ******************************* \n\n\n ");
  free(pStaticMsg);
   return 0;
}
SMSHOSTLIB_ERR_CODES_E ADR_DeviceTerminate()
{
	SMSHOSTLIB_ERR_CODES_E Ret;
	SMSHOSTLIB_ERR_CODES_E FinalRet = SMSHOSTLIB_ERR_OK;
	int i;
	OSW_TaskId TaskIdCopy;

	if (!g_devData.IsFound)
	{
		return FinalRet;
	}
    
	//close all handles
	for ( i = 0 ; i < g_devData.NumOfHandles ; i++ )
	{
		Ret = ADR_CloseHandle( i );
		if ( Ret != SMSHOSTLIB_ERR_OK )
		{
			FinalRet = SMSHOSTLIB_ERR_UNDEFINED_ERR;
		}
	}

	//double check - close data push thread, wait till thread is done
	while(g_devData.thread_done != TRUE){OSW_TaskSleep(10);};                                 
       TaskIdCopy = g_devData.pDataTask;
	OSW_TaskCleanup(TaskIdCopy);

	//close ctrl push thread
   	TaskIdCopy = g_devData.pCtrlTask;
	OSW_TaskCleanup(TaskIdCopy);

       //power off
	int fd;
	fd = open( "/dev/mdtvctrl", O_RDWR );
	if(fd < 0)
	{
		ADR_LOGE("failed openning device file for control.\n");
		return SMSHOSTLIB_ERR_COMM_ERR;
	}

	ADR_LOGE("SMSCHAR_DEVICE_POWER_OFF\n");

	if (0 > ioctl(fd, SMSCHAR_DEVICE_POWER_OFF))
	{
		close(fd);
		ADR_LOGE("SMSCHAR_DEVICE_POWER_OFF failed %d\n", errno);
		return SMSHOSTLIB_ERR_COMM_ERR;
	}
	close(fd);
	return FinalRet;
}