Example #1
0
/*
 * get the current value of a v4l2 string control
 */
JNIEXPORT jstring JNICALL Java_au_edu_jcu_v4l4j_Control_doGetStringValue(JNIEnv *e, jobject t, jlong object, jint id){
	dprint(LOG_CALLS, "[CALL] Entering %s\n",__PRETTY_FUNCTION__);
	struct v4l4j_device *d = (struct v4l4j_device *) (uintptr_t) object;
	int ret;
	char *val;
	jstring result;

	XMALLOC(val, char*, d->vdev->control->controls[id].v4l2_ctrl->maximum + 1); // "+ 1" as per spec

	dprint(LOG_LIBVIDEO, "[LIBVIDEO] Calling get_control_value(dev: %s, ctrl name:%s)\n", d->vdev->file,d->vdev->control->controls[id].v4l2_ctrl->name);
	ret = get_control_value(d->vdev,d->vdev->control->controls[id].v4l2_ctrl, val, d->vdev->control->controls[id].v4l2_ctrl->maximum + 1);
	if(ret != 0) {
		XFREE(val);
		THROW_EXCEPTION(e, CTRL_EXCP, "Error getting current value for string control '%s'", d->vdev->control->controls[id].v4l2_ctrl->name);
		return NULL;
	}

	dprint(LOG_V4L4J, "[V4L4J] get_control_value(dev: %s, string ctrl name:%s) = %s\n", d->vdev->file,d->vdev->control->controls[id].v4l2_ctrl->name, val);

	result = (*e)->NewStringUTF(e, val);

	XFREE(val);

	return result;
}
Example #2
0
any Control::value() const
{
  if (m_runner->isRunning())
    return m_atomic->value();
  else
    return get_control_value( m_atomic->systemControl() );
}
Example #3
0
/* send an HTMl page over the "newsockfd" socket with a list of V4L2 controls (brightness, contrast, ...)
 * as well as JPEG and fps controls
 */
void list_cap_param(int newsockfd,struct video_device *d) {
	char *page, *ptr;
	struct control_list *l = get_control_list(d);
	int i, v;

	XMALLOC(page, char *, PARAM_PAGE_SIZE);
	ptr = page;
	ptr += sprintf(ptr,"<html><body>\n");

	//outputs JPEG quality control setting
	ptr += sprintf(ptr,"<form method=\"get\"><h4>JPEG quality</h4>Value: %d (min: 0, max: 100, step: 1)<br>\n", jpeg_quality);
	ptr += sprintf(ptr,"<input type=\"text\" name=\"val\" value=\"%d\" size=\"5\"> &nbsp; <input type=\"submit\" name=\"-1\" value=\"update\"></form>\n", jpeg_quality);
	write(newsockfd, page, strlen(page));
	ptr = page;
	memset(page, 0, PARAM_PAGE_SIZE);

	//outputs frame rate control setting
	ptr += sprintf(ptr,"<form method=\"get\"><h4>Frame rate</h4>Value: %d (min: 1, max: 25, step: 1)<br>\n", requested_fps);
	ptr += sprintf(ptr,"<input type=\"text\" name=\"val\" value=\"%d\" size=\"3\"> &nbsp; <input type=\"submit\" name=\"-2\" value=\"update\"></form>\n", requested_fps);
	write(newsockfd, page, strlen(page));
	ptr = page;
	memset(page, 0, PARAM_PAGE_SIZE);

	//outputs controls
	l = d->control;
	for(i = 0; i< l->count; i++) {
		if(get_control_value(d, l->controls[i].v4l2_ctrl, &v) != 0) {
			info(LOG_ERR, "Error getting value for control %s\n", l->controls[i].v4l2_ctrl->name);
			v = 0;
		}
		ptr += sprintf(ptr,"<form method=\"get\"><h4>%s</h4>Value: %d (min: %d, max: %d", l->controls[i].v4l2_ctrl->name, v, l->controls[i].v4l2_ctrl->minimum, l->controls[i].v4l2_ctrl->maximum);
		if(l->controls[i].count_menu!=0) {
			int j;
			ptr += sprintf(ptr,"\n)<select name=\"val\">\n");
			for(j=0; j<l->controls[i].count_menu; j++){
				ptr += sprintf(ptr, "<option value=\"%d\"%s>%d</option>\n",l->controls[i].v4l2_menu[j].index, v == l->controls[i].v4l2_menu[j].index ? " selected" : "", l->controls[i].v4l2_menu[j].index);
			}
			ptr += sprintf(ptr, "</select>\n");
		} else {
			ptr += sprintf(ptr,", step: %d)<br>\n", l->controls[i].v4l2_ctrl->step);
			ptr += sprintf(ptr,"<input type=\"text\" name=\"val\" value=\"%d\" size=\"5\"> ", v);
		}
		ptr += sprintf(ptr, "&nbsp; <input type=\"submit\" name=\"%d\" value=\"update\"></form>\n", i);
		write(newsockfd, page, strlen(page));
		ptr = page;
		memset(page, 0, PARAM_PAGE_SIZE);
	}

	//output end of HTML body
	ptr += sprintf(ptr,"</body></html>\n");
	write(newsockfd, page, strlen(page));
	XFREE(page);
	release_control_list(d);
}
Example #4
0
/*
 * get the current value of a v4l2 control
 */
JNIEXPORT jint JNICALL Java_au_edu_jcu_v4l4j_Control_doGetValue(JNIEnv *e, jobject t, jlong object, jint id){
	dprint(LOG_CALLS, "[CALL] Entering %s\n",__PRETTY_FUNCTION__);
	struct v4l4j_device *d = (struct v4l4j_device *) (uintptr_t) object;
	int val = 0, ret;

	dprint(LOG_LIBVIDEO, "[LIBVIDEO] Calling get_control_value(dev: %s, ctrl name:%s)\n", d->vdev->file,d->vdev->control->controls[id].v4l2_ctrl->name);
	ret = get_control_value(d->vdev,d->vdev->control->controls[id].v4l2_ctrl, &val, 0);

	if(ret != 0) {
		THROW_EXCEPTION(e, CTRL_EXCP, "Error getting current value for control '%s'", d->vdev->control->controls[id].v4l2_ctrl->name);
		return -1;
	}

	dprint(LOG_V4L4J, "[V4L4J] get_control_value(dev: %s, ctrl name:%s) = %d\n", d->vdev->file,d->vdev->control->controls[id].v4l2_ctrl->name, val);
	return val;
}
Example #5
0
/*
 * get the current value of a v4l2 integer64 control
 */
JNIEXPORT jlong JNICALL Java_au_edu_jcu_v4l4j_Control_doGetLongValue(JNIEnv *e, jobject t, jlong object, jint id){
	dprint(LOG_CALLS, "[CALL] Entering %s\n",__PRETTY_FUNCTION__);
	struct v4l4j_device *d = (struct v4l4j_device *) (uintptr_t) object;
	int ret;
	jlong result;

	dprint(LOG_LIBVIDEO, "[LIBVIDEO] Calling get_control_value(dev: %s, ctrl name:%s)\n", d->vdev->file, d->vdev->control->controls[id].v4l2_ctrl->name);
	ret = get_control_value(d->vdev,d->vdev->control->controls[id].v4l2_ctrl, &result, 0);
	if(ret != 0) {
		THROW_EXCEPTION(e, CTRL_EXCP, "Error getting current value for long control '%s'", d->vdev->control->controls[id].v4l2_ctrl->name);
		return 0;
	}

	dprint(LOG_V4L4J, "[V4L4J] get_control_value(dev: %s, integer64 ctrl name:%s) = %lld\n", d->vdev->file,d->vdev->control->controls[id].v4l2_ctrl->name, (unsigned long long)result);

	return result;
}