Ejemplo n.º 1
0
MTK_NFC_CHIP_TYPE_E mtk_nfc_get_chip_type (void)
{
    MTK_NFC_CHIP_TYPE_E eChipType = MTK_NFC_CHIP_TYPE_UNKNOW;
    int result;
    char data[32];// ="0x55";
    int len =0;
    unsigned int TimerID;
    
    
    //Init Timer
    // Initialize timer handler
    result = mtk_nfc_sys_timer_init();
    if (result < 0) 
    {
      #ifdef DEBUG_LOG
      ALOGD("mtk_nfc_sys_timer_init fail, error code %d\n", result);
      #endif
      return (result);
    }
    //{
    //int i;
    //for (i=0;i<100;i++){ usleep(1000);}
    //}  
    
    //ALOGD("MT6605_LC_TEST_ADD_DELAY");
    /* TRY MT6605*/
    //////////////////////////////////////////////////////////////////
    // (1) open device node
    handle = open(DevNode_mt6605, O_RDWR | O_NOCTTY);    
    if (handle < 0)
    {
        #ifdef DEBUG_LOG
        ALOGD("OpenDeviceFail,eChipType,%d",eChipType); 
        #endif		
        return 	eChipType;	
    }
    // (3) mask IRQ by IOCTL
    ioctl(handle,0xFE00,0);
    // (4) re-registration IRQ handle by IOCTL
    ioctl(handle,0xFE01,0);
    
    //
    ioctl(handle,0x01, ((0x00 << 8) | (0x01)));
    ioctl(handle,0x01, ((0x01 << 8) | (0x00)));
    {
    int i;
    for (i=0;i<10;i++){ usleep(1000);}
    }   
    
    // 
    ioctl(handle,0x01, ((0x00 << 8) | (0x00)));
    ioctl(handle,0x01, ((0x01 << 8) | (0x00)));
    {
    int i;
    for (i=0;i<10;i++){ usleep(1000);}
    }
    ioctl(handle,0x01, ((0x01 << 8) | (0x01)));
    //    
    {
    int i;
    for (i=0;i<100;i++){ usleep(1000);}
    }   
    //ALOGD("MT6605_LC_TEST_O");
    // (5) Write 0x55    
    data[0] = 0x55;
    len = 1;
    if (write(handle, &data[0], len) < 0)
    {
        #ifdef DEBUG_LOG
        ALOGD("MT6605_Write_Err"); 
        #endif		
        return 	eChipType;	
    }
    // (6) Read 0x55
    // Set Timeout   
    mtkNfcQueryChipIdTimeout = 1; 
    TimerID = mtk_nfc_sys_timer_create();
    // Seart Timer and set time-out is 3 sec
    mtk_nfc_sys_timer_start(TimerID, 3000, &mtkNfcQueryChipIdTimeoutCb, NULL);
    len = 32;
    if (read(handle, &data[0], len) < 0)
    {
        #ifdef DEBUG_LOG
        ALOGD("MT6605_Write_Err"); 
        #endif		
        return 	eChipType;	
    }
    
    if (mtkNfcQueryChipIdTimeout == 1)
    {
        mtk_nfc_sys_timer_stop(TimerID);
    
        if ((data[0] == 0xA5) /*&& (data[1] == 0x05) && (data[2] == 0x00) && (data[3] == 0x01)*/)
        {
            eChipType = MTK_NFC_CHIP_TYPE_MT6605;
        }
        
        close(handle);
    }   
    mtk_nfc_sys_timer_delete(TimerID);
    //////////////////////////////////////////////////////////////////
    /* TRY MT6605 END*/    
    
    #ifdef DEBUG_LOG
    ALOGD("eChipType,%d",eChipType);
    #endif
    
    return 	eChipType;	
}
Ejemplo n.º 2
0
/***************************************************************************** 
 * Function
 *****************************************************************************/ 
int mtk_nfc_sys_init_android(void)
{
   int result = MTK_NFC_SUCCESS;

   #ifdef SUPPORT_SHARED_LIBRARY
   MTK_NFC_SYS_FUNCTION_POINT_T gNfc_sys_fp;
   
   gNfc_sys_fp.sys_mem_alloc           =    mtk_nfc_sys_mem_alloc;       
   gNfc_sys_fp.sys_mem_free            =    mtk_nfc_sys_mem_free;
   gNfc_sys_fp.sys_mutex_create        =    mtk_nfc_sys_mutex_create;    
   gNfc_sys_fp.sys_mutex_take          =    mtk_nfc_sys_mutex_take;      
   gNfc_sys_fp.sys_mutex_give          =    mtk_nfc_sys_mutex_give;      
   gNfc_sys_fp.sys_mutex_destory       =    mtk_nfc_sys_mutex_destory;   
   gNfc_sys_fp.sys_msg_alloc           =    mtk_nfc_sys_msg_alloc;       
   gNfc_sys_fp.sys_msg_send            =    mtk_nfc_sys_msg_send;        
   gNfc_sys_fp.sys_msg_recv            =    mtk_nfc_sys_msg_recv;        
   gNfc_sys_fp.sys_msg_free            =    mtk_nfc_sys_msg_free;        
   gNfc_sys_fp.sys_dbg_string          =    mtk_nfc_sys_dbg_string;      
   gNfc_sys_fp.sys_dbg_trace           =    mtk_nfc_sys_dbg_trace;       
   gNfc_sys_fp.sys_dbg_trx_to_file     =    mtk_nfc_sys_dbg_trx_to_file; 
   gNfc_sys_fp.sys_timer_create        =    mtk_nfc_sys_timer_create;    
   gNfc_sys_fp.sys_timer_start         =    mtk_nfc_sys_timer_start;     
   gNfc_sys_fp.sys_timer_stop          =    mtk_nfc_sys_timer_stop;      
   gNfc_sys_fp.sys_timer_delete        =    mtk_nfc_sys_timer_delete;    
   gNfc_sys_fp.sys_sleep               =    mtk_nfc_sys_sleep;           
   gNfc_sys_fp.sys_assert              =    mtk_nfc_sys_assert;          
   gNfc_sys_fp.sys_interface_write     =    mtk_nfc_sys_interface_write; 
   gNfc_sys_fp.sys_gpio_write          =    mtk_nfc_sys_gpio_write;      
   gNfc_sys_fp.sys_gpio_read           =    mtk_nfc_sys_gpio_read; 
   
   gNfc_sys_fp.sys_file_open           =    mtk_nfc_sys_file_open;      
   gNfc_sys_fp.sys_file_close          =    mtk_nfc_sys_file_close;      
   gNfc_sys_fp.sys_file_read           =    mtk_nfc_sys_file_read;   
   gNfc_sys_fp.sys_file_seek           =    mtk_nfc_sys_file_seek;   
   gNfc_sys_fp.sys_file_tell           =    mtk_nfc_sys_file_tell;   
   gNfc_sys_fp.sys_file_rewind         =    mtk_nfc_sys_file_rewind; 

   result =  mtk_nfc_sys_function_registry(&gNfc_sys_fp);

   NFCD("mtk_nfc_sys_function_registry[%d]\n", result);   
   #endif

   NFCD("mtk_nfc_sys_init_android...\n");

   // Initial global variables
   gInterfaceHandle = C_INVALID_FD;
   g_ThreadExitReadFunc = FALSE;
   g_ThreadExitMainProcFunc = FALSE;
   g_ThreadExitService = FALSE;
#ifdef SUPPORT_BLOCKING_READ_MECHANISM
   g_ThreadExitSocket = FALSE;
#endif

#ifdef SUPPORT_BLOCKING_READ_MECHANISM
   // create event resource
   result = mtk_nfc_sys_event_create(MTK_NFC_EVENT_2MAIN);
   if (result != MTK_NFC_SUCCESS) {
      NFCD("mtk_nfc_sys_event_create,MTK_NFC_EVENT_2MAIN ERR\n");
      return (result);
   }
   result = mtk_nfc_sys_event_create(MTK_NFC_EVENT_2SERV);
   if (result != MTK_NFC_SUCCESS) {
      NFCD("mtk_nfc_sys_event_create,MTK_NFC_EVENT_2SERV ERR\n");
      return (result);
   }
#endif

   // Initial system resource - mutex
   result = mtk_nfc_sys_mutex_initialize();
   if (MTK_NFC_SUCCESS != result) {      
      NFCD("mtk_nfc_sys_mutex_initialize fail\n");
      return (result);
   }   

   // Initial system resource - message queue   
   result = mtk_nfc_sys_msg_initialize();
   if (MTK_NFC_SUCCESS != result) {      
      NFCD("mtk_nfc_sys_msg_initialize fail\n");
      return (result);
   }   
   
   // Initial physical interface
   result = (int)mtk_nfc_sys_interface_init(NULL, 0);
   if (result < 0) {      
      NFCD("mtk_nfc_sys_interface_init fail, error code %d\n", result);
      return (result);
   }

   // Initialize timer handler
   result = mtk_nfc_sys_timer_init();
   if (result != MTK_NFC_SUCCESS) {      
      NFCD("mtk_nfc_sys_timer_init fail, error code %d\n", result);
      return (result);
   }
   
   // Create Thread
   result = mtk_nfc_threads_create(MTK_NFC_THREAD_READ);
   if (result != MTK_NFC_SUCCESS)
   {
      NFCD("mtk_nfc_threads_create, read thread ERR\n");
      return (result);
   }
   
   result = mtk_nfc_threads_create(MTK_NFC_THREAD_MAIN);
   if (result != MTK_NFC_SUCCESS)
   {
      NFCD("mtk_nfc_threads_create, main thread ERR\n");
      return (result);
   }
   
   #ifdef SELF_TEST
   result = mtk_nfc_threads_create(MTK_NFC_THREAD_SERVICE);
   if (result != MTK_NFC_SUCCESS)
   {
      NFCD("mtk_nfc_threads_create, service thread ERR\n");
      return (result);
   }
   #endif

   #ifdef SUPPORT_BLOCKING_READ_MECHANISM
   result = mtk_nfc_threads_create(MTK_NFC_THREAD_SOCKET);
   if (result != MTK_NFC_SUCCESS)
   {
      NFCD("mtk_nfc_threads_create, socket thread ERR\n");
      return (result);
   }
   #endif

   NFCD("mtk_nfc_sys_init_android done,%d\n", result);
   
   return (result);   
}