Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/support/drivers/hotplug/button.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/support/drivers/hotplug/button.lua')
-rw-r--r--lib/support/drivers/hotplug/button.lua32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/support/drivers/hotplug/button.lua b/lib/support/drivers/hotplug/button.lua
new file mode 100644
index 0000000..9ddba48
--- /dev/null
+++ b/lib/support/drivers/hotplug/button.lua
@@ -0,0 +1,32 @@
+local device = _G
+
+local RD_VERSION=string.char(0x00)
+local GET_VALUE=string.char(0x01)
+local string_byte=string.byte
+
+-- description: lets us know button module's version
+api={}
+api.getVersion = {}
+api.getVersion.parameters = {} -- no input parameters
+api.getVersion.returns = {[1]={rname="version", rtype="int"}}
+api.getVersion.call = function ()
+ device:send(RD_VERSION) -- operation code 0 = get version
+ local version_response = device:read(3) -- 3 bytes to read (opcode, data)
+ if not version_response or #version_response~=3 then return -1 end
+ local raw_val = (string_byte(version_response,2) or 0) + (string_byte(version_response,3) or 0)* 256
+ return raw_val
+end
+
+-- description: lets us know button's current status
+-- input: empty
+-- output: button's current status. Possible status: 1 pressed - 0 not pressed
+api.getValue = {}
+api.getValue.parameters = {} -- no input parameters
+api.getValue.returns = {[1]={rname="state", rtype="int"}}
+api.getValue.call = function ()
+ device:send(GET_VALUE) -- operation code 1 = get button's status
+ local sen_dig_response = device:read(2) -- 2 bytes to read (opcode, data)
+ if not sen_dig_response or #sen_dig_response~=2 then return -1 end
+ local raw_val = string_byte(sen_dig_response, 2) or 0 -- keep data
+ return raw_val
+end