Example #1
0
LPCUSBSIO_API int32_t I2C_CancelAllRequest(LPC_HANDLE handle)
{
    LPCUSBSIO_I2C_Ctrl_t *dev = (LPCUSBSIO_I2C_Ctrl_t *) handle;
    uint32_t lMapLenght = 0x00, i;
    LPCUSBSIO_Request_t** lRequest = NULL;
    void* Notifier = NULL;

    framework_LockMutex(dev->RequestMapLock);

    //1rst call => we get map lenght
    map_getAll(dev->request_map, NULL, (int*)&lMapLenght);

    lRequest = framework_AllocMem(lMapLenght * sizeof(LPCUSBSIO_Request_t));
    //2nd call => we get all object in map
    map_getAll(dev->request_map, (void **) lRequest, (int*) &lMapLenght);

    for (i = 0x00; i < lMapLenght; i++)
    {
        //Cancel request
        if (NULL != (*lRequest)[i].notifier)
        {
			(*lRequest)[i].status = LPCUSBSIO_REQ_CANCELED;
			Notifier = (*lRequest)[i].notifier;
			framework_LockMutex(Notifier);
			framework_NotifyMutex(Notifier, 0);
			framework_UnlockMutex(Notifier);
			Notifier = NULL;
        }
    }
    framework_FreeMem(lRequest);
    framework_UnlockMutex(dev->RequestMapLock);
    return 0;    
}
Example #2
0
static void freeDevice(LPCUSBSIO_I2C_Ctrl_t *dev)
{
    LPCUSBSIO_I2C_Ctrl_t *curDev = g_Ctrl.devList;
    
    if (curDev == dev) {
        g_Ctrl.devList = dev->next;
    }
    else {
        while (curDev) {
            if (curDev->next == dev) {
                /* update linked list */
                curDev->next = dev->next;
                break;
            }
        }
    }
    framework_FreeMem(dev);

    /* unload HID library if all devices are closed. */
    if (g_Ctrl.devList == NULL) {
        hid_free_enumeration(g_Ctrl.devInfoList);
        hid_exit();
    }
    
}
Example #3
0
void framework_DeleteMutex(void * mutexHandle)
{
	tLinuxMutex_t *mutex = (tLinuxMutex_t*)mutexHandle;
	
	pthread_mutex_destroy(mutex->lock);
	pthread_cond_destroy(mutex->cond);
	
	framework_FreeMem(mutex);
}
Example #4
0
eResult framework_CreateThread(void** threadHandle, void * (* threadedFunc)(void *) , void * ctx)
{
	tLinuxThread_t *linuxThread = (tLinuxThread_t *)framework_AllocMem(sizeof(tLinuxThread_t));
	
	linuxThread->ctx = ctx;
	linuxThread->threadedFunc = threadedFunc;
	framework_CreateMutex(&(linuxThread->mutexCanDelete));
	
	if (pthread_create(&(linuxThread->thread), NULL, thread_object_func, linuxThread))
	{
		printf("Cannot create Thread\n");
		framework_DeleteMutex(linuxThread->mutexCanDelete);
		framework_FreeMem(linuxThread);
		
		return FRAMEWORK_FAILED;
	}
	pthread_detach(linuxThread->thread);
	
	*threadHandle = linuxThread;
	
	return FRAMEWORK_SUCCESS;
}
Example #5
0
void framework_DeleteThread(void * threadHandle)
{
	tLinuxThread_t *linuxThread = (tLinuxThread_t*)threadHandle;
	framework_DeleteMutex(linuxThread->mutexCanDelete);
	framework_FreeMem(linuxThread);
}