89 lines
2.0 KiB
C
89 lines
2.0 KiB
C
// Module for interfacing with sigma-delta hardware
|
|
|
|
#include "module.h"
|
|
#include "lauxlib.h"
|
|
#include "platform.h"
|
|
|
|
|
|
// Lua: setup( channel, pin )
|
|
static int sigma_delta_setup( lua_State *L )
|
|
{
|
|
int channel = luaL_checkinteger( L, 1 );
|
|
int pin = luaL_checkinteger( L, 2 );
|
|
|
|
MOD_CHECK_ID(sigma_delta, channel);
|
|
|
|
if (!platform_sigma_delta_setup( channel, pin ))
|
|
luaL_error( L, "command failed" );
|
|
|
|
return 0;
|
|
}
|
|
|
|
// Lua: close( channel )
|
|
static int sigma_delta_close( lua_State *L )
|
|
{
|
|
int channel = luaL_checkinteger( L, 1 );
|
|
|
|
MOD_CHECK_ID(sigma_delta, channel);
|
|
|
|
platform_sigma_delta_close( channel );
|
|
|
|
return 0;
|
|
}
|
|
|
|
#if 0
|
|
// Lua: setpwmduty( channel, duty_cycle )
|
|
static int sigma_delta_setpwmduty( lua_State *L )
|
|
{
|
|
int channel = luaL_checkinteger( L, 1 );
|
|
int duty = luaL_checkinteger( L, 2 );
|
|
|
|
MOD_CHECK_ID(sigma_delta, channel);
|
|
|
|
if (!platform_sigma_delta_set_pwmduty( channel, duty ))
|
|
luaL_error( L, "command failed" );
|
|
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
// Lua: setprescale( channel, value )
|
|
static int sigma_delta_setprescale( lua_State *L )
|
|
{
|
|
int channel = luaL_checkinteger( L, 1 );
|
|
int prescale = luaL_checkinteger( L, 2 );
|
|
|
|
MOD_CHECK_ID(sigma_delta, channel);
|
|
|
|
if (!platform_sigma_delta_set_prescale( channel, prescale ))
|
|
luaL_error( L, "command failed" );
|
|
|
|
return 0;
|
|
}
|
|
|
|
// Lua: setduty( channel, value )
|
|
static int sigma_delta_setduty( lua_State *L )
|
|
{
|
|
int channel = luaL_checkinteger( L, 1 );
|
|
int duty = luaL_checkinteger( L, 2 );
|
|
|
|
MOD_CHECK_ID(sigma_delta, channel);
|
|
|
|
if (!platform_sigma_delta_set_duty( channel, duty ))
|
|
luaL_error( L, "command failed" );
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
// Module function map
|
|
LROT_BEGIN(sigma_delta, NULL, 0)
|
|
LROT_FUNCENTRY( setup, sigma_delta_setup )
|
|
LROT_FUNCENTRY( close, sigma_delta_close )
|
|
//LROT_FUNCENTRY( setpwmduty, sigma_delta_setpwmduty )
|
|
LROT_FUNCENTRY( setprescale, sigma_delta_setprescale )
|
|
LROT_FUNCENTRY( setduty, sigma_delta_setduty )
|
|
LROT_END(sigma_delta, NULL, 0)
|
|
|
|
NODEMCU_MODULE(SIGMA_DELTA, "sigma_delta", sigma_delta, NULL);
|