Skip to content
This repository has been archived by the owner on Jul 1, 2018. It is now read-only.

Commit

Permalink
Add PiEMOS to runtime interface.
Browse files Browse the repository at this point in the history
  • Loading branch information
zentner-kyle committed Nov 24, 2014
1 parent db344fe commit b9d46f8
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
2 changes: 2 additions & 0 deletions controller/inc/runtime_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ int lua_set_led_val(lua_State *L);
int lua_get_analog_val(lua_State *L);
int lua_set_analog_val(lua_State *L);
int lua_set_grizzly_val(lua_State *L);
int lua_get_piemos_analog_val(lua_State *L);
int lua_get_piemos_digital_val(lua_State *L);



Expand Down
43 changes: 43 additions & 0 deletions controller/src/runtime_interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ void runtime_register(TenshiRuntimeState s) {
LUA_REG(get_analog_val),
LUA_REG(set_analog_val),
LUA_REG(set_grizzly_val),
LUA_REG(get_piemos_analog_val),
LUA_REG(get_piemos_digital_val),
{NULL, NULL}
};

Expand All @@ -82,6 +84,9 @@ void lua_register_all(lua_State *L) {
LUA_REGISTER(get_analog_val);
LUA_REGISTER(set_analog_val);
LUA_REGISTER(set_grizzly_val);

LUA_REGISTER(get_piemos_analog_val);
LUA_REGISTER(get_piemos_digital_val);
}

// Runtime required
Expand Down Expand Up @@ -282,6 +287,44 @@ int lua_set_grizzly_val(lua_State *L) {
return 0;
}

// get_piemos_analog_val(idx):
// Get the analog value at PiEMOS index <idx>.
// <idx> is 1 indexed. 1 is the first channel. 7 is the last channel.
int lua_get_piemos_analog_val(lua_State *L) {
int was_num = 1;
int idx = lua_tointegerx(L, 1, &was_num);
// Check that the index is in range and was a number.
if (idx < 1 || idx > 7 || !was_num) {
return luaL_error(L, "Invalid index for PiEMOS analog value: %s.\n",
lua_tolstring(L, 1, NULL));
}
// Pop the index argument off the stack.
lua_pop(L, 1);

// Compensate for 1 indexing.
float val = PiEMOSAnalogVals[idx - 1] / 100.0f;
lua_pushnumber(L, val);
return 1;
}

// get_piemos_digital_val(idx):
// Get the digital value at PiEMOS index <idx>.
// <idx> is 1 indexed. 1 is the first channel. 8 is the last channel.
int lua_get_piemos_digital_val(lua_State *L) {
int was_num = 1;
int idx = lua_tointegerx(L, 1, &was_num);
// Check that the index is in range and was a number.
if (idx < 1 || idx > 8 || !was_num) {
return luaL_error(L, "Invalid index for PiEMOS digital value: %s.\n",
lua_tolstring(L, 1, NULL));
}
// Pop the index argument off the stack.
lua_pop(L, 1);

// Compensate for 1 indexing.
lua_pushboolean(L, PiEMOSDigitalVals[idx - 1]);
return 1;
}


// Not hooked up to lua
Expand Down

0 comments on commit b9d46f8

Please sign in to comment.