Ejemplo n.º 1
0
int dci_load(struct dci_state* state, struct dc_entry_t* entry)
{
	if(entry->cached == 0)
	{
		struct str_t uri;
		str_init_create(&uri, getfile_uri, 0);

		const struct str_t const* uri_parts[] =
		{
			&slash,
			&entry->_id,
		};
		str_concat(&uri, sizeof(uri_parts)/sizeof(const struct str_t const*), uri_parts);
		{
			struct request_t request;
			ci_init(&request, &uri, 0, NULL, NULL, GET);
			ci_request(&request);
		
			str_swap(&request.response.body, &entry->cache);
			ci_destroy(&request);
			entry->cached = 1;
		}
	}

	return 0;
}
Ejemplo n.º 2
0
void dci_get_file_list(const char *path, struct dci_state *state)
{
	int is_already_path = dci_is_already_path(path, state);
	if(is_already_path) return;

	struct str_t uri;
	str_init_create(&uri, filelist_uri, 0);

	struct str_t path_param;
	str_init_create(&path_param, "path=", 0);
	struct str_t *path_str = str_urlencode_char(path, 0);
	const struct str_t const* uri_parts[] =
	{
		&path_param,
		path_str
	};
	str_concat(&uri, sizeof(uri_parts)/sizeof(const struct str_t const*), uri_parts);
	{
		struct request_t request;
		ci_init(&request, &uri, 0, NULL, NULL, GET);
		ci_request(&request);

		json_parse_file_list(path, &request.response.body, state);
	
		ci_destroy(&request);
	}
	str_destroy(&uri);
}
Ejemplo n.º 3
0
int dci_write(const char *path, const char *buf, size_t size, const char *fileName, struct dci_state *state)
{
	struct str_t header;
	struct str_t fileName_param;
	struct str_t fileSize_param;
	struct str_t uploadDate_param;
	struct str_t deviceID_param;
	struct str_t isFolder_param;
	struct str_t path_param;
	struct str_t data_param;
	struct str_t data;

	str_init_create(&header, "Content-Type: application/json", 0);
	str_init_create(&fileName_param, "fileName=", 0);
	str_init_create(&fileSize_param, "fileSize=", 0);
	str_init_create(&uploadDate_param, "uploadDate=", 0);
	str_init_create(&deviceID_param, "deviceID", 0);
	str_init_create(&isFolder_param, "isFolder=", 0);
	str_init_create(&path_param, "path=", 0);
	str_init_create(&data_param, "data=", 0);

	struct dc_entry_t* entry;
	entry = (struct dc_entry_t*) malloc(sizeof(struct dc_entry_t));

	memset(entry, 0, sizeof(struct dc_entry_t));

	str_init_create(&entry->fileName, fileName, 0);
	entry->fileSize = size;
	entry->uploadDate = time(0);
	str_init_create(&entry->deviceID, "binensky", 0);
	entry->isFolder = 0;
	str_init_create(&entry->path, path, 0);
	str_init_create(&entry->cache, buf, 0);
	entry->cached = 1;

	struct str_t uri;
	struct str_t param_uri;
	str_init_create(&uri, getfile_uri, 0);
	str_init(&param_uri);

	const struct str_t const* uri_parts[] =
	{
		&fileName_param,
		fileName,
		&amp,
		&fileSize_param,
		itoa(entry->fileSize),
		&amp,
		&uploadDate_param,
		itoa(entry->uploadDate),
		&amp,
		&deviceID_param,
		&entry->deviceID,
		&amp,
		&isFolder_param,
		itoa(entry->isFolder),
		&amp,
		&path_param,
		&entry->path,
		&amp,
		&data_param,
		&entry->cache
	};
	str_concat(&param_uri, sizeof(uri_parts)/sizeof(const struct str_t const*), uri_parts);
	{
		struct request_t request;
		ci_init(&request, &uri, 0, NULL, param_uri.str, POST);
		ci_request(&request);

		str_swap(&request.response.body, &entry->_id);
		ci_destroy(&request);

		struct dc_entry_t *tmp = dci_last_entry(state);
		tmp = entry;
	}
}
Ejemplo n.º 4
0
int mcam_init(p_camera_context_t camera_context)
{
	int   status = 0;

#ifdef DEBUG_PARAM_CHECK

	/* parameter check */
	if (camera_context->sensor_type > CAMERA_TYPE_MAX)
		return -EINVAL;

	/* check the function dispatch table according to the sensor type */
	if (!camera_context->camera_functions)
		return -EINVAL;

	if (!camera_context->camera_functions->init ||
			!camera_context->camera_functions->deinit ||
			!camera_context->camera_functions->set_capture_format ||
			!camera_context->camera_functions->start_capture ||
			!camera_context->camera_functions->stop_capture)
		return -EINVAL;
#endif

	/* initialize some camera used parameters */
	camera_context->capture_input_width = 0;
	camera_context->capture_input_height = 0;
	camera_context->capture_output_width = 0;
	camera_context->capture_output_height = 0;
	camera_context->capture_input_format = CAMERA_IMAGE_FORMAT_MAX + 1;
	camera_context->capture_output_format = CAMERA_IMAGE_FORMAT_MAX + 1;
	camera_context->fifo0_transfer_size = 0;
	camera_context->fifo1_transfer_size = 0;
	camera_context->fifo2_transfer_size = 0;
	camera_context->fifo3_transfer_size = 0;
	camera_context->video_fifo0_transfer_size = 0;
	camera_context->video_fifo1_transfer_size = 0;
	camera_context->video_fifo2_transfer_size = 0;
	camera_context->still_fifo0_transfer_size = 0;
	camera_context->still_fifo1_transfer_size = 0;
	camera_context->still_fifo2_transfer_size = 0;
	camera_context->frame_buffer_number = 0;
	camera_context->video_capture_buffer_queue.head = NULL;
	camera_context->video_capture_buffer_queue.tail = NULL;
	camera_context->still_capture_buffer_queue.head = NULL;
	camera_context->still_capture_buffer_queue.tail = NULL;
	camera_context->psu_enable = 0;
	camera_context->cgu_enable = 0;
	camera_context->ssu_scale = CI_SSU_SCALE_DISABLE;
	camera_context->cmu_usage = CI_CMU_DISABLE;
	camera_context->dma_running = 0;

	/* MFP pins init */
	zylonite_enable_cif_pins();

	/* UTMI_SWITCH must be set to low and
	 * the UTMI_TEST_EN should be set to output (low)
	 */
	mhn_gpio_set_direction(MFP_UTMI_SWITCH,  GPIO_DIR_OUT);
	mhn_gpio_set_direction(MFP_UTMI_TEST_EN, GPIO_DIR_OUT);
	mhn_gpio_set_level(MFP_UTMI_SWITCH,  GPIO_LEVEL_LOW);
	mhn_gpio_set_level(MFP_UTMI_TEST_EN, GPIO_LEVEL_HIGH);

	/* set two gpio pin direction as output
	 * to control the power of two sensors.
	 */
	mhn_gpio_set_direction(MFP_CIF_HI_PWDN_GPI0, GPIO_DIR_OUT);
	mhn_gpio_set_direction(MFP_CIF_LO_PWDN_GPI0, GPIO_DIR_OUT);
	/* set two gpio pin output as HI to power off two sensors. */
	mhn_gpio_set_level(MFP_CIF_HI_PWDN_GPI0, GPIO_LEVEL_HIGH);
	mhn_gpio_set_level(MFP_CIF_LO_PWDN_GPI0, GPIO_LEVEL_HIGH);

	/* capture interface init */
	ci_init();

	/* sensor init */
	status = camera_context->camera_functions->init(camera_context);
	if (status) {
		goto camera_init_err;
	}

	/* set frame rate */
	mcam_set_capture_frame_rate(camera_context);

	return 0;

camera_init_err:
	mcam_deinit(camera_context);
	return -EIO;
}
Ejemplo n.º 5
0
/* copydirectory: copy all regular files in src to dst,
    arg is of form 'src\0dst\0' */
static void *copydirectory(void *arg)
{
	struct iofiles *iofp, *newiofp;
	char *src_dir, *dst_dir;
	char *src_path, *dst_path;
	struct dirent *dirp;
	DIR *dp;
	int infd, outfd;
	pthread_t tid;
	struct stat statbuf;
	copyinfo_t *cip, *newci;

				/* get inputs */
	iofp = (struct iofiles *)arg;
	src_dir = iofp->source;
	dst_dir = iofp->destination;

	fprintf(stderr, "copydirectory got: %s %s\n", src_dir, dst_dir);
	tid = 0;
	if ((dp = opendir(src_dir)) == NULL) {
		err_quit("Failed to opendir: %s", src_dir);
	}
	if (stat(dst_dir, &statbuf) == -1) {
		if (mkdir(dst_dir, DIR_MODE) == -1)
			err_sys("mkdir error");
	}

	while ((dirp = readdir(dp)) != NULL) {
		if ((!strcmp(dirp->d_name, ".")) ||
		    (!strcmp(dirp->d_name, "..")))
			continue;
		src_path = buildpath(src_dir, dirp->d_name);
		if (stat(src_path, &statbuf) == -1)
			err_sys("stat error");
		if ((infd = open(src_path, O_RDONLY)) < 0) 
		    err_sys("failed to open %s", src_path);
		dst_path = buildpath(dst_dir, dirp->d_name);
		if (S_ISDIR(statbuf.st_mode)) {
			newiofp = Malloc(sizeof(struct iofiles));
			newiofp->source = s_dup(src_path);
			newiofp->destination = s_dup(dst_path);
			copydirectory((void *)newiofp);
			continue;
		}
		if ((outfd = open(dst_path, OFLAGS, FILE_MODE)) < 0)
		    err_sys("failed to open %s", dst_path);
	
		newci = ci_init(dst_path, tid);
		newci->sourcefd = infd;
		newci->destinationfd = outfd;
		newci->next = head;
		head = newci;
		Pthread_create(&newci->tid, NULL, copyfilepass, (void *)newci);
		for (cip = head; cip != NULL; cip = cip->next) {
			(void)pthread_join(cip->tid, NULL);			
		}

		free(src_path);
		free(dst_path);
	}
	if (closedir(dp) < 0)
		err_msg("failed to close directory");
	return (void *)0;
}