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; }