Ejemplo n.º 1
0
void ipcon_device_create(Device *device, const char *uid) {
	int i;
	for(i = 0; i < MAX_NUM_CALLBACKS; i++) {
		device->registered_callbacks[i] = NULL;
		device->callback_wrappers[i] = NULL;
	}

	device->uid = ipcon_base58decode(uid);
	device->ipcon = NULL;
	device->response.function_id = 0;
	device->response.length = 0;

#ifdef _WIN32
	InitializeCriticalSection(&device->write_mutex);
	// Default state for response semaphore is empty
	device->response_semaphore = CreateSemaphore(NULL, 0, 1, NULL);
#else
	pthread_mutex_init(&device->write_mutex, NULL);
	pthread_mutex_init(&device->response_mutex, NULL);
	pthread_cond_init(&device->response_cond, NULL);

	device->response_flag = false;
#endif
}
Ejemplo n.º 2
0
void ipcon_device_create(Device *device, const char *uid) {
	int i;
	for(i = 0; i < MAX_NUM_CALLBACKS; i++) {
		device->callbacks[i] = NULL;
		device->device_callbacks[i] = NULL;
	}

	device->uid = ipcon_base58decode(uid);
	device->ipcon = NULL;
	device->answer.function_id = 0;
	device->answer.length = 0;

#ifdef _WIN32
	device->sem_write = CreateSemaphore(NULL,1,1,NULL);
	// Default state for answer semaphore is locked
	device->sem_answer = CreateSemaphore(NULL,0,1,NULL);
#else
	pthread_mutex_init(&device->sem_write, NULL);
	pthread_mutex_init(&device->sem_answer, NULL);
	pthread_cond_init(&device->cond, NULL);

	device->sem_answer_flag = false;
#endif
}