From 49293a571046fbef8736eb20ccb01c35ca2287c6 Mon Sep 17 00:00:00 2001 From: 9sdv Date: Mon, 18 Mar 2024 16:58:57 -0600 Subject: [PATCH 1/2] allow for non-lickport reward pins --- src/TreadmillController.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/TreadmillController.java b/src/TreadmillController.java index 6777950..210a99e 100755 --- a/src/TreadmillController.java +++ b/src/TreadmillController.java @@ -922,6 +922,9 @@ void configure_rewards() throws Exception { if (context.getString("id").equals(reward_context)) { JSONArray valve_list = context.getJSONArray("valves"); reward_valve = valve_list.getInt(0); + if (context.getString("type").equals("operant")) { + lickport_pin = context.getInt("sensor"); + } return; } } @@ -939,6 +942,10 @@ void configure_rewards() throws Exception { reward_info.setJSONArray("valves", context_valves); } + if (!reward_info.isNull("sensor")) { + lickport_pin = reward_info.getInt("sensor"); + } + if (!reward_info.isNull("drop_size")) { JSONArray context_duration = new JSONArray(); context_duration.append(reward_info.getInt("drop_size")); @@ -1670,10 +1677,19 @@ protected void updateBehavior(float time) { String action = sensorJson.getString("action", "stop"); if (action.equals("start")) { display.setSensorState(sensor_pin, 1); - sensor_counts.put(sensor_pin, - sensor_counts.get(sensor_pin) + 1); + if (sensor_counts.containsKey(sensor_pin)) { + sensor_counts.put(sensor_pin, + sensor_counts.get(sensor_pin) + 1); + } + if (sensor_pin == lickport_pin) { + display.addLick(started); + lick_count++; + } } else if (action.equals("stop")) { display.setSensorState(sensor_pin, -1); + if (sensor_pin == lickport_pin) { + display.lickStop(); + } } else if (action.equals("created")) { sensor_counts.put(sensor_pin, 0); display.setSensorState(sensor_pin, -1); From c46894569beeb2e514308291bdad3a1e8066b7e6 Mon Sep 17 00:00:00 2001 From: 9sdv Date: Mon, 26 Aug 2024 10:03:47 -0600 Subject: [PATCH 2/2] fixed random iti for timed iti decorator --- src/TimedITIContextDecorator.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/TimedITIContextDecorator.java b/src/TimedITIContextDecorator.java index 74337c9..68ed337 100644 --- a/src/TimedITIContextDecorator.java +++ b/src/TimedITIContextDecorator.java @@ -27,12 +27,12 @@ public class TimedITIContextDecorator extends SuspendableContextDecorator { /** * ? */ - protected int iti_time_min; + protected float iti_time_min; /** * ? */ - protected int iti_time_max; + protected float iti_time_max; /** * ? @@ -73,6 +73,7 @@ public TimedITIContextDecorator(TreadmillController tc, this.random_iti = context_info.getBoolean("random_iti", false); if (this.random_iti) { + this.random = new Random(); this.iti_time_min = context_info.getInt("iti_time_min"); this.iti_time_max = context_info.getInt("iti_time_max"); } else { @@ -134,8 +135,8 @@ public boolean check_suspend(float position, float time, int lap, int lick_count if (this.long_delay_laps.contains(this.start_lap)) { this.next_start = time + this.long_delay; } else if (this.random_iti) { - this.next_start = time + random.nextInt( - (this.iti_time_max - this.iti_time_min + 1)) + this.iti_time_min; + this.next_start = time + this.random.nextFloat() * + (this.iti_time_max - this.iti_time_min) + this.iti_time_min; } else { this.next_start = time + this.iti_time; }