#define CHANNEL_PATH BASE_PATH "scan_elements/"
#define ENABLE_PATH BASE_PATH "buffer/enable"
+#define BUFFER_LENGTH_PATH BASE_PATH "buffer/length"
#define NAME_PATH BASE_PATH "name"
#define TRIGGER_PATH BASE_PATH "trigger/current_trigger"
#define EVENTS_PATH BASE_PATH "events/"
#define PANEL_FRONT 4
#define PANEL_BACK 5
+/* Buffer default length */
+#define BUFFER_LENGTH 16
+
/* We equate sensor handles to indices in these tables */
struct sensor_t sensor_desc[MAX_SENSORS]; /* Android-level descriptors */
int num_channels;
char suffix[MAX_NAME_SIZE + 8];
int calib_bias;
+ int buffer_length;
if (sensor_count == MAX_SENSORS) {
ALOGE("Too many sensors!\n");
sysfs_write_int(sysfs_path, calib_bias);
}
+ /* Change buffer length according to the property or use default value */
+ if (mode == MODE_TRIGGER) {
+ if (sensor_get_prop(s, "buffer_length", &buffer_length)) {
+ buffer_length = BUFFER_LENGTH;
+ }
+
+ sprintf(sysfs_path, BUFFER_LENGTH_PATH, dev_num);
+
+ if (sysfs_write_int(sysfs_path, buffer_length) <= 0) {
+ ALOGE("Failed to set buffer length on dev%d", dev_num);
+ }
+ }
+
/* Read name attribute, if available */
sprintf(sysfs_path, NAME_PATH, dev_num);
sysfs_read_str(sysfs_path, sensor[s].internal_name, MAX_NAME_SIZE);