12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "module.h"
- #include "lauxlib.h"
- #include "platform.h"
- #include "rom.h"
- //#include "driver/easygpio.h"
- //static Ping_Data pingA;
- #define defPulseLen 185
- #define defProtocol 1
- #define defRepeat 10
- #define defBits 24
- static void ICACHE_FLASH_ATTR transmit(int pin, int pulseLen, int nHighPulses, int nLowPulses) {
- platform_gpio_write(pin, 1);
- os_delay_us(pulseLen*nHighPulses);
- platform_gpio_write(pin, 0);
- os_delay_us(pulseLen*nLowPulses);
- }
- //rc.send(4,267715,24,185,1,10) --GPIO, code, bits, pulselen, protocol, repeat
- static int ICACHE_FLASH_ATTR rc_send(lua_State* L) {
- const uint8_t pin = luaL_checkinteger(L, 1);
- platform_gpio_mode(pin, PLATFORM_GPIO_OUTPUT, PLATFORM_GPIO_FLOAT);
- //platform_gpio_mode(pin, PLATFORM_GPIO_OUTPUT, PLATFORM_GPIO_PULLUP);
- //platform_gpio_mode(pin, PLATFORM_GPIO_OUTPUT, PLATFORM_GPIO_PULLDOWN);
- platform_gpio_write(pin, 0);
- long code = luaL_checklong(L, 2);
- //const uint8_t bits = luaL_checkinteger(L, 3);
- uint8_t bits = luaL_checkinteger(L, 3);
- const uint8_t pulseLen = luaL_checkinteger(L, 4);
- const uint8_t Protocol = luaL_checkinteger(L, 5);
- const uint8_t repeat = luaL_checkinteger(L, 6);
- NODE_ERR("pulseLen:%d\n",pulseLen);
- NODE_ERR("Protocol:%d\n",Protocol);
- NODE_ERR("repeat:%d\n",repeat);
- NODE_ERR("send:");
- int c,k,nRepeat;
- bits = bits-1;
- for (c = bits; c >= 0; c--)
- {
- k = code >> c;
- if (k & 1)
- NODE_ERR("1");
- else
- NODE_ERR("0");
- }
- NODE_ERR("\n");
- for (nRepeat=0; nRepeat<repeat; nRepeat++) {
- for (c = bits; c >= 0; c--)
- {
- k = code >> c;
- if (k & 1){
- //send1
- if(Protocol==1){
- transmit(pin,pulseLen,3,1);
- }else if(Protocol==2){
- transmit(pin,pulseLen,2,1);
- }else if(Protocol==3){
- transmit(pin,pulseLen,9,6);
- }
- }
- else{
- //send0
- if(Protocol==1){
- transmit(pin,pulseLen,1,3);
- }else if(Protocol==2){
- transmit(pin,pulseLen,1,2);
- }else if(Protocol==3){
- transmit(pin,pulseLen,4,11);
- }
- }
- }
- //sendSync();
- if(Protocol==1){
- transmit(pin,pulseLen,1,31);
- }else if(Protocol==2){
- transmit(pin,pulseLen,1,10);
- }else if(Protocol==3){
- transmit(pin,pulseLen,1,71);
- }
- }
- return 1;
- }
- // Module function map
- static const LUA_REG_TYPE rc_map[] = {
- { LSTRKEY( "send" ), LFUNCVAL( rc_send )},
- { LNILKEY, LNILVAL}
- };
- int luaopen_rc(lua_State *L) {
- // TODO: Make sure that the GPIO system is initialized
- return 0;
- }
- NODEMCU_MODULE(RC, "rc", rc_map, luaopen_rc);
|