mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2025-10-30 03:54:40 +00:00
BL602 irRemoteESP (#1777)
This commit is contained in:
parent
6ea915a574
commit
f3d3ff412a
2
.github/workflows/workflow.yaml
vendored
2
.github/workflows/workflow.yaml
vendored
@ -217,6 +217,8 @@ jobs:
|
||||
|
||||
- platform: OpenBL602
|
||||
variant: berry
|
||||
#- platform: OpenBL602
|
||||
# variant: irRemoteESP
|
||||
steps:
|
||||
- name: Source checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
@ -6,7 +6,8 @@ COMPONENT_ADD_INCLUDEDIRS += src/ src/httpserver/ src/httpclient/ src/cmnds/ src
|
||||
## not be exported to project level
|
||||
COMPONENT_PRIV_INCLUDEDIRS :=
|
||||
|
||||
CFLAGS += -DOBK_VARIANT=${OBK_VARIANT}
|
||||
CPPFLAGS += -DOBK_VARIANT=${OBK_VARIANT} -Wno-undef
|
||||
CXXFLAGS += -Wno-delete-non-virtual-dtor -Wno-error=format
|
||||
|
||||
## This component's src
|
||||
COMPONENT_SRCS :=
|
||||
@ -14,6 +15,6 @@ COMPONENT_SRCS :=
|
||||
COMPONENT_OBJS := $(patsubst %.c,%.o, $(COMPONENT_SRCS))
|
||||
COMPONENT_OBJS := $(patsubst %.S,%.o, $(COMPONENT_OBJS))
|
||||
|
||||
COMPONENT_SRCDIRS := src/ src/jsmn src/httpserver src/httpclient src/cmnds src/logging src/hal/bl602 src/mqtt src/i2c src/cJSON src/base64 src/driver src/devicegroups src/bitmessage src/littlefs src/hal/generic libraries/berry/src src/berry src/berry/modules
|
||||
COMPONENT_SRCDIRS := src/ src/jsmn src/httpserver src/httpclient src/cmnds src/logging src/hal/bl602 src/mqtt src/i2c src/cJSON src/base64 src/driver src/devicegroups src/bitmessage src/littlefs src/hal/generic libraries/berry/src src/berry src/berry/modules src/libraries/IRremoteESP8266/src
|
||||
|
||||
COMPONENT_ADD_LDFLAGS = -Wl,--whole-archive -l$(COMPONENT_NAME) -Wl,--no-whole-archive
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 0046566610e7197f508dea60bc8b3bd1b75bc692
|
||||
Subproject commit 6f91cd2a9f18da9e3f9d68d2e9d3a08cb6260a72
|
||||
@ -36,6 +36,10 @@ extern "C" {
|
||||
#include "../hal/realtek/hal_pinmap_realtek.h"
|
||||
void pwmout_start(pwmout_t* obj);
|
||||
void pwmout_stop(pwmout_t* obj);
|
||||
#elif PLATFORM_BL602
|
||||
#include "bl602_timer.h"
|
||||
#include "hosal_timer.h"
|
||||
#define UINT32 uint32_t
|
||||
#endif
|
||||
|
||||
// why can;t I call this?
|
||||
@ -133,20 +137,27 @@ Print Serial;
|
||||
extern "C" void
|
||||
#if PLATFORM_BEKEN
|
||||
DRV_IR_ISR(UINT8 t)
|
||||
#else
|
||||
#elif PLATFORM_REALTEK
|
||||
DRV_IR_ISR()
|
||||
#else
|
||||
DRV_IR_ISR(void* arg)
|
||||
#endif
|
||||
;
|
||||
extern void IR_ISR();
|
||||
|
||||
#if PLATFORM_BEKEN
|
||||
static UINT32 ir_chan = BKTIMER0;
|
||||
static UINT32 ir_div = 1;
|
||||
static UINT32 ir_periodus = 50;
|
||||
#elif PLATFORM_REALTEK
|
||||
static gtimer_t ir_timer;
|
||||
static UINT32 ir_chan = TIMER2;
|
||||
#endif
|
||||
static UINT32 ir_div = 1;
|
||||
static UINT32 ir_periodus = 50;
|
||||
#elif PLATFORM_BL602
|
||||
static hosal_timer_dev_t ir_timer;
|
||||
static UINT32 ir_chan = TIMER_CH0;
|
||||
static UINT32 ir_periodus = 50;
|
||||
#endif
|
||||
|
||||
void timerConfigForReceive() {
|
||||
// nothing here`
|
||||
@ -193,6 +204,13 @@ void _timerConfigForReceive() {
|
||||
ADDLOG_INFO(LOG_FEATURE_IR, (char *)"ir timer enabled %u", res);
|
||||
#elif PLATFORM_REALTEK
|
||||
gtimer_init(&ir_timer, ir_chan);
|
||||
#elif PLATFORM_BL602
|
||||
ir_timer.port = ir_chan;
|
||||
ir_timer.config.period = ir_periodus;
|
||||
ir_timer.config.reload_mode = TIMER_RELOAD_PERIODIC;
|
||||
ir_timer.config.cb = DRV_IR_ISR;
|
||||
ir_timer.config.arg = NULL;
|
||||
hosal_timer_init(&ir_timer);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -206,6 +224,8 @@ static void _timer_enable() {
|
||||
res = sddev_control((char *)TIMER_DEV_NAME, CMD_TIMER_UNIT_ENABLE, &ir_chan);
|
||||
#elif PLATFORM_REALTEK
|
||||
gtimer_start_periodical(&ir_timer, ir_periodus, (void*)&DRV_IR_ISR, (uint32_t)&ir_timer);
|
||||
#elif PLATFORM_BL602
|
||||
hosal_timer_start(&ir_timer);
|
||||
#endif
|
||||
ADDLOG_INFO(LOG_FEATURE_IR, (char *)"ir timer enabled %u", res);
|
||||
}
|
||||
@ -215,6 +235,9 @@ static void _timer_disable() {
|
||||
res = sddev_control((char *)TIMER_DEV_NAME, CMD_TIMER_UNIT_DISABLE, &ir_chan);
|
||||
#elif PLATFORM_REALTEK
|
||||
gtimer_stop(&ir_timer);
|
||||
#elif PLATFORM_BL602
|
||||
hosal_timer_stop(&ir_timer);
|
||||
hosal_timer_finalize(&ir_timer);
|
||||
#endif
|
||||
ADDLOG_INFO(LOG_FEATURE_IR, (char *)"ir timer disabled %u", res);
|
||||
}
|
||||
@ -369,8 +392,10 @@ IRrecv *ourReceiver = NULL;
|
||||
extern "C" void
|
||||
#if PLATFORM_BEKEN
|
||||
DRV_IR_ISR(UINT8 t)
|
||||
#else
|
||||
#elif PLATFORM_REALTEK
|
||||
DRV_IR_ISR()
|
||||
#else
|
||||
DRV_IR_ISR(void* arg)
|
||||
#endif
|
||||
{
|
||||
int sending = 0;
|
||||
@ -741,9 +766,15 @@ extern "C" void DRV_IR_Init() {
|
||||
|
||||
int pin = -1; //9;// PWM3/25
|
||||
int txpin = -1; //24;// PWM3/25
|
||||
bool pup = true;
|
||||
|
||||
// allow user to change them
|
||||
pin = PIN_FindPinIndexForRole(IOR_IRRecv, pin);
|
||||
if(pin == -1)
|
||||
{
|
||||
pin = PIN_FindPinIndexForRole(IOR_IRRecv_nPup, pin);
|
||||
if(pin >= 0) pup = false;
|
||||
}
|
||||
txpin = PIN_FindPinIndexForRole(IOR_IRSend, txpin);
|
||||
|
||||
if (ourReceiver){
|
||||
@ -752,19 +783,19 @@ extern "C" void DRV_IR_Init() {
|
||||
delete temp;
|
||||
}
|
||||
ADDLOG_INFO(LOG_FEATURE_IR, (char *)"DRV_IR_Init: recv pin %i", pin);
|
||||
if ((pin > 0) || (txpin > 0)) {
|
||||
if ((pin >= 0) || (txpin >= 0)) {
|
||||
}
|
||||
else {
|
||||
_timer_disable();
|
||||
}
|
||||
|
||||
if (pin > 0) {
|
||||
if (pin >= 0) {
|
||||
// setup IRrecv pin as input
|
||||
//bk_gpio_config_input_pup((GPIO_INDEX)pin); // enabled by enableIRIn
|
||||
|
||||
//TODO: we should specify buffer size (now set to 1024), timeout (now 90ms) and tolerance
|
||||
ourReceiver = new IRrecv(pin);
|
||||
ourReceiver->enableIRIn(true);// try with pullup
|
||||
ourReceiver->enableIRIn(pup);
|
||||
}
|
||||
|
||||
if (pIRsend) {
|
||||
|
||||
@ -31,6 +31,7 @@ int HAL_PIN_ReadDigitalInput(int index) {
|
||||
return iVal;
|
||||
}
|
||||
void HAL_PIN_Setup_Input_Pulldown(int index) {
|
||||
bl_gpio_enable_input(index, 0, 1);
|
||||
}
|
||||
void HAL_PIN_Setup_Input_Pullup(int index) {
|
||||
// int bl_gpio_enable_input(uint8_t pin, uint8_t pullup, uint8_t pulldown);
|
||||
@ -67,7 +68,8 @@ void HAL_PIN_PWM_Start(int index, int freq) {
|
||||
|
||||
//addLogAdv(LOG_INFO, LOG_FEATURE_MAIN,"HAL_PIN_PWM_Start: pin %i chose pwm %i\r\n",index,pwm);
|
||||
// Frequency must be between 2000 and 800000
|
||||
bl_pwm_init(pwm, index, 2000);
|
||||
if(freq < 2000) freq = 2000;
|
||||
bl_pwm_init(pwm, index, freq);
|
||||
bl_pwm_start(pwm);
|
||||
|
||||
}
|
||||
|
||||
@ -554,6 +554,7 @@ const char* htmlPinRoleNames[] = {
|
||||
"PWM_ScriptOnly_n",
|
||||
"Counter_f",
|
||||
"Counter_r",
|
||||
"IRRecv_nPup",
|
||||
"error",
|
||||
"error",
|
||||
"error",
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
#if PLATFORM_BEKEN || PLATFORM_REALTEK
|
||||
#if PLATFORM_BEKEN || PLATFORM_REALTEK || PLATFORM_BL602
|
||||
//TODO
|
||||
extern unsigned long micros(void);
|
||||
extern unsigned long millis(void);
|
||||
|
||||
@ -9,6 +9,9 @@ extern "C" {
|
||||
#else
|
||||
#include "../../../hal/hal_pins.h"
|
||||
#endif
|
||||
#if PLATFORM_BL602
|
||||
#include "bl602_glb.h"
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "digitalWriteFast.h"
|
||||
@ -25,6 +28,8 @@ void digitalToggleFast(unsigned char P) {
|
||||
unsigned char digitalReadFast(unsigned char P) {
|
||||
#if PLATFORM_BEKEN
|
||||
return bk_gpio_input((GPIO_INDEX)P);
|
||||
#elif PLATFORM_BL602
|
||||
return GLB_GPIO_Read((GLB_GPIO_Type)P);
|
||||
#else
|
||||
return HAL_PIN_ReadDigitalInput(P);
|
||||
#endif
|
||||
@ -35,6 +40,8 @@ void digitalWriteFast(unsigned char P, unsigned char V) {
|
||||
//HAL_PIN_SetOutputValue(index, iVal);
|
||||
#if PLATFORM_BEKEN
|
||||
bk_gpio_output((GPIO_INDEX)P, V);
|
||||
#elif PLATFORM_BL602
|
||||
GLB_GPIO_Write((GLB_GPIO_Type)P, V ? 1 : 0);
|
||||
#else
|
||||
HAL_PIN_SetOutputValue(P, V);
|
||||
#endif
|
||||
|
||||
@ -588,6 +588,13 @@ typedef enum ioRole_e {
|
||||
//iodetail:"file":"new_pins.h",
|
||||
//iodetail:"driver":""}
|
||||
IOR_Counter_r,
|
||||
//iodetail:{"name":"IRRecv_nPup",
|
||||
//iodetail:"title":"TODO",
|
||||
//iodetail:"descr":"IRRecv without pull-up",
|
||||
//iodetail:"enum":"IRRecv_nPup",
|
||||
//iodetail:"file":"new_pins.h",
|
||||
//iodetail:"driver":""}
|
||||
IOR_IRRecv_nPup,
|
||||
//iodetail:{"name":"Total_Options",
|
||||
//iodetail:"title":"TODO",
|
||||
//iodetail:"descr":"Current total number of available IOR roles",
|
||||
|
||||
@ -216,6 +216,15 @@
|
||||
#define ENABLE_OBK_BERRY 1
|
||||
#endif
|
||||
|
||||
//#if (OBK_VARIANT == OBK_VARIANT_IRREMOTEESP)
|
||||
//#undef ENABLE_DRIVER_CHT83XX
|
||||
//#undef ENABLE_DRIVER_DS1820
|
||||
//#undef ENABLE_DRIVER_CSE7766
|
||||
//#undef ENABLE_DRIVER_BL0937
|
||||
//#undef ENABLE_DRIVER_BL0942
|
||||
#define ENABLE_DRIVER_IRREMOTEESP 1
|
||||
//#endif
|
||||
|
||||
#elif PLATFORM_BEKEN
|
||||
|
||||
//#define ENABLE_LFS_SPI 1
|
||||
|
||||
@ -1114,7 +1114,8 @@ void Main_Init_AfterDelay_Unsafe(bool bStartAutoRunScripts) {
|
||||
CMD_Init_Delayed();
|
||||
|
||||
if (bStartAutoRunScripts) {
|
||||
if (PIN_FindPinIndexForRole(IOR_IRRecv, -1) != -1 || PIN_FindPinIndexForRole(IOR_IRSend, -1) != -1) {
|
||||
if (PIN_FindPinIndexForRole(IOR_IRRecv, -1) != -1 || PIN_FindPinIndexForRole(IOR_IRSend, -1) != -1
|
||||
|| PIN_FindPinIndexForRole(IOR_IRRecv_nPup, -1) != -1) {
|
||||
// start IR driver 5 seconds after boot. It may affect wifi connect?
|
||||
// yet we also want it to start if no wifi for IR control...
|
||||
#ifndef OBK_DISABLE_ALL_DRIVERS
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user