From 5b5e6e3d6ace7f3fa4e7a9c5cee1dada9255703f Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 12 Apr 2024 11:00:42 +0300 Subject: [PATCH] Ultrasonic sensor added CAN driver logic/relability improved string -> itemCmd functionality added, cold boot w/o config procedure improved --- build-flags/build_flags_stm32-noip | 1 + compiled/lighthub21/firmware.bin | Bin 195760 -> 211712 bytes lighthub/candriver.cpp | 134 ++++++++++++++++++----------- lighthub/candriver.h | 10 ++- lighthub/flashstream.cpp | 2 +- lighthub/inputs.cpp | 75 +++++++++++++--- lighthub/inputs.h | 6 +- lighthub/item.cpp | 6 +- lighthub/item.h | 1 + lighthub/itemCmd.cpp | 75 ++++++++++++++-- lighthub/main.cpp | 40 +++++++-- lighthub/main.h | 3 +- lighthub/options.h | 3 + lighthub/seekablestream.h | 2 +- lighthub/utils.cpp | 2 +- lighthub/utils.h | 2 +- 16 files changed, 275 insertions(+), 87 deletions(-) diff --git a/build-flags/build_flags_stm32-noip b/build-flags/build_flags_stm32-noip index fafe4e8..263c950 100644 --- a/build-flags/build_flags_stm32-noip +++ b/build-flags/build_flags_stm32-noip @@ -15,6 +15,7 @@ -D CANDRV -D THERMOSTAT_CHECK_PERIOD=5000 +-D ULTRASONIC -DENABLE_HWSERIAL1 diff --git a/compiled/lighthub21/firmware.bin b/compiled/lighthub21/firmware.bin index 209394aae82e2308cfa089f1b2a5729ee4c21845..e79b6e6ec7e159545f5c529dbe733870a0d427f6 100644 GIT binary patch delta 93268 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 Un^a)TPgs}sioVL6icm&EL1^hv_TAGsnZqeF8V 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

ne+&Pu_x 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 diff --git a/lighthub/candriver.cpp b/lighthub/candriver.cpp index bf36fe8..bef8e3a 100644 --- a/lighthub/candriver.cpp +++ b/lighthub/candriver.cpp @@ -52,7 +52,7 @@ bool canDriver::upTime(uint32_t ut) packet.metric1=ut; - debugSerial<<("UpTime")<mac); //debugSerial<<"ID requested"<type == aJson_Int)) { - debugSerial<valueint << endl; + debugSerial<valueint << endl; return addrObj->valueint; } @@ -531,7 +531,7 @@ return 0; bool canDriver::write(uint32_t msg_id, datagram_t * buf, uint8_t size) { //return 0; - if (!ready) errorSerial<<"CAN not initialized"<8) size = 8; @@ -542,8 +542,8 @@ bool canDriver::write(uint32_t msg_id, datagram_t * buf, uint8_t size) CAN_TX_msg.id = msg_id; CAN_TX_msg.flags.extended = 1; // To enable extended ID CAN_TX_msg.len=size; - if (res=STMCan.write(CAN_TX_msg)) debugSerial<<("CAN Wrote ")<data,size); //for(uint8_t i=0;idata[i]; res=Can0.sendFrame(CAN_TX_msg); - if (res) debugSerial<<("CAN Wrote ")<type) + { + case aJson_Int: cmd.setSuffix(sfx->valueint); + break; + case aJson_String: + int suffix=txt2subItem(sfx->valuestring); + if (suffix) cmd.setSuffix(suffix); + } debugSerial<valueint << ":" << it->valueint<type == aJson_Int && it->type == aJson_Int) return sendCommand(dev->valueint, it->valueint, cmd, status); @@ -621,8 +631,8 @@ bool canDriver::sendCommand(uint8_t devID, uint16_t itemID, itemCmd cmd, bool st res=write (id.id,&packet,8); - if (res) debugSerial<write (id.id, &writeBuffer, len); writePos=0; @@ -662,37 +672,48 @@ bool canDriver::sendCommand(uint8_t devID, uint16_t itemID, itemCmd cmd, bool st { case canState::StreamOpenedRead: readPos = 0; - res= driver->requestFrame(devId,pType); //Requesting frame; + res= driver->requestFrame(devId,pType,seqNo); //Requesting frame; if (res) state = canState::FrameRequested; else { state = canState::Error; return -1; - } + } + if (seqNo ==0xFFFF) seqNo =0; //continue case canState::FrameRequested: - { - uint32_t timer = millis(); + { int c; - + + uint32_t timer = millis(); do { - debugSerial.print("."); + //debugSerial.print("."); yield(); - if (c=driver->readFrame()>0 && (driver->RXid.deviceId == devId) && (driver ->RXid.payloadType == pType)) + if ((c=driver->readFrame()>0) && (driver->RXid.deviceId == devId) && (driver ->RXid.payloadType == pType) && driver->RXid.status) { state = canState::FrameReceived; - debugSerial<RXlen<< " "<RXpacket.payload<RXlen<< " "<RXpacket.payload<<"#"<RXid.itemId<RXid.itemId; + failedCount=0; return driver->RXlen; } } while((!isTimeOver(timer,millis(),1000UL)) ); + + debugSerial<=3) + { + state = canState::Error; + return -1; + } - debugSerial<RXid.payloadType == pType) && (driver->RXid.status == 0) ) - state = canState::StreamOpenedWrite; + { + debugSerial<RXid.itemId<RXid.itemId) + { + state = canState::StreamOpenedWrite; + seqNo++; + } + else + { + state = canState::Error; + errorSerial<RXlen; @@ -772,7 +808,7 @@ bool canDriver::sendCommand(uint8_t devID, uint16_t itemID, itemCmd cmd, bool st if (isTimeOver(timer,millis(),1000UL)) { state = canState::Error; - errorSerial<=8) { - bool res = send(8); + bool res = send(8,seqNo); if (res) state = canState::waitingConfirm; else state = canState::Error; return res; @@ -791,7 +827,7 @@ bool canDriver::sendCommand(uint8_t devID, uint16_t itemID, itemCmd cmd, bool st void canStream::flush() { - send(writePos); + send(writePos,seqNo); }; diff --git a/lighthub/candriver.h b/lighthub/candriver.h index ff46e24..fbe2878 100644 --- a/lighthub/candriver.h +++ b/lighthub/candriver.h @@ -118,7 +118,7 @@ bool sendCommand(aJsonObject * can,itemCmd cmd, bool status = false); bool upTime(uint32_t ut); bool salt(uint32_t salt); bool lookupMAC(); -bool requestFrame(uint8_t devId, payloadType _payloadType ); +bool requestFrame(uint8_t devId, payloadType _payloadType, uint16_t seqNo ); int readFrame(); bool sendRemoteID(macAddress mac); bool begin(); @@ -161,13 +161,15 @@ extern aJsonObject * topics; class canStream : public Stream { public: - canStream(canDriver * _driver) : readPos(0),writePos(0),devId(0), pType(payloadType::unknown),state(canState::stateUnknown){driver=_driver; } + canStream(canDriver * _driver) : readPos(0),writePos(0),devId(0), pType(payloadType::unknown),state(canState::stateUnknown),seqNo(0),failedCount(0){driver=_driver; } int open(uint8_t controllerID, payloadType _pType, char _mode) { if (mode) close(); devId=controllerID; pType = _pType; mode = _mode; + seqNo=0xFFFF; + failedCount=0; if (mode == 'w') state=canState::StreamOpenedWrite; else state=canState::StreamOpenedRead; return 1; @@ -194,7 +196,7 @@ public: private: - int send(uint8_t len); + int send(uint8_t len, uint16_t _seqNo); int checkState(); canDriver * driver; unsigned int readPos; @@ -203,6 +205,8 @@ private: datagram_t writeBuffer; uint8_t devId; + uint16_t seqNo; + int8_t failedCount; char mode; payloadType pType; canState state; diff --git a/lighthub/flashstream.cpp b/lighthub/flashstream.cpp index 735e627..7b09186 100644 --- a/lighthub/flashstream.cpp +++ b/lighthub/flashstream.cpp @@ -237,7 +237,7 @@ NRFFlashStorage EEPROM; { samBufferPos = 0; EEPROM.write(startPos+pos-sizeof(samBuffer),(byte*)samBuffer,sizeof(samBuffer)); - + } samBuffer[samBufferPos++]=ch; diff --git a/lighthub/inputs.cpp b/lighthub/inputs.cpp index 9ec6d01..6bed6dd 100644 --- a/lighthub/inputs.cpp +++ b/lighthub/inputs.cpp @@ -44,6 +44,14 @@ extern canDriver LHCAN; #include "Adafruit_MCP23X17.h" Adafruit_MCP23X17 mcp; #endif + +#ifdef ULTRASONIC +#define US_TRIG PA_14 //pin49 +#define US_ECHO PA_15 //pin50 +#include "Ultrasonic.h" +Ultrasonic ultrasonic(US_TRIG, US_ECHO); +#endif + #if not defined (NOIP) extern PubSubClient mqttClient; #endif @@ -107,6 +115,7 @@ void Input::Parse(aJsonObject * configObj) store = NULL; inType = 0; pin = 0; + pin2 =0; if (!inputObj || !root) return; if (!configObj) configObj = inputObj; @@ -118,10 +127,25 @@ void Input::Parse(aJsonObject * configObj) if (itemBuffer) inType = static_cast(itemBuffer->valueint); itemBuffer = aJson.getObjectItem(configObj, "#"); - if (itemBuffer) pin = static_cast(itemBuffer->valueint); - else pin = static_cast(atoi(configObj->name)); - } + if (itemBuffer) + switch (itemBuffer->type) + { + case aJson_Int: + pin = static_cast(itemBuffer->valueint); + + break; + case aJson_Array: + if ((itemBuffer->child) && (itemBuffer->child->type == aJson_Int)) + { + pin = static_cast(itemBuffer->child->valueint); + if ((itemBuffer->child->child) && (itemBuffer->child->child->type == aJson_Int)) + pin = static_cast(itemBuffer->child->child->valueint); + } + } //switch + else pin = static_cast(atoi(configObj->name)); + + } // Persistant storage itemBuffer = aJson.getObjectItem(inputObj, "@S"); if (!itemBuffer) { @@ -135,8 +159,10 @@ void Input::Parse(aJsonObject * configObj) void cleanStore(aJsonObject * input) { -if (input->type == aJson_Object) { +if (input && (input->type == aJson_Object)) { // Check for nested inputs + Input in(input); + in.store->aslong = 0; aJsonObject * inputArray = aJson.getObjectItem(input, "act"); if (inputArray && (inputArray->type == aJson_Array)) { @@ -153,9 +179,8 @@ if (input->type == aJson_Object) { } else { - Input in(input); - in.store->aslong = 0; - //in.Poll(CHECK_INPUT); + // Input in(input); + // in.store->aslong = 0; } } } @@ -267,6 +292,14 @@ switch (cause) { break; } break; + case CHECK_ULTRASONIC: + switch (inType) + { + case IN_ULTRASONIC: + analogPoll(cause); + contactPoll(cause); + } + break; case CHECK_SENSOR: //Slow polling switch (inType) { @@ -528,7 +561,8 @@ debugSerial << F("IN:") << pin << F(" DHT22 type. T=") << temp << F("°C H=") << #endif // TODO Polling via timed interrupt with CHECK_INTERRUPT cause -bool Input::changeState(uint8_t newState, short cause) +bool Input:: +changeState(uint8_t newState, short cause) { if (!inputObj || !store) return false; @@ -666,8 +700,11 @@ if (newState!=store->state && cause!=CHECK_INTERRUPT) debugSerial<type == aJson_Array) + if ((isAnalogPin(pin) || (inType == IN_ULTRASONIC)) && (mapObj=aJson.getObjectItem(inputObj, "map")) && mapObj->type == aJson_Array) { - int value = inCache.analogReadCached(pin); + int value = inCache.analogReadCached(pin,pin2,inType); if (value >= aJson.getArrayItem(mapObj, 0)->valueint && value <= aJson.getArrayItem(mapObj, 1)->valueint) currentInputState = true; else currentInputState = false; @@ -801,7 +838,7 @@ if (cause != CHECK_INTERRUPT) switch (store->state) //Timer based transitions // onContactChanged(currentInputState); //Legacy input - to remove later bool res = true; - if (currentInputState) //Button pressed state transitions + if (currentInputState) //Button pressed state transitions switch (store->state) { @@ -896,7 +933,7 @@ void Input::analogPoll(short cause) { pinMode(pin, inputPinMode); */ - inputVal = inCache.analogReadCached(pin); + inputVal = inCache.analogReadCached(pin,pin2,inType); // Mapping if (inputMap && inputMap->type == aJson_Array) { @@ -1110,8 +1147,18 @@ readCache::readCache() cached_data = 0; } -uint16_t readCache::analogReadCached (uint8_t _pin) +uint16_t readCache::analogReadCached (uint8_t _pin, uint8_t trigPin, uint8_t _type ) { +#ifdef ULTRASONIC +if (_type == IN_ULTRASONIC) +{ + if ((_pin==addr) && (IN_ULTRASONIC == type)) return cached_data; + type = IN_ULTRASONIC; + cached_data=ultrasonic.read(); + //debugSerial<=0) cmd.cmdCode = cmdN; + + bool hsvflag=false; + + switch (cmd.cmdCode) { + case CMD_HSV: + hsvflag=true; + case CMD_RGB: + + cmd.cmdCode=CMD_VOID; + //Parsing integers from payload + i = 0; + + while (_cmd && i < 4) + Par[i++] = getIntFromStr((char **) &_cmd); + + if (hsvflag) + { + setSuffix(S_HSV); + cmd.itemArgType=ST_HSV255; + switch (i) //Number of params + { + case 4: + setColorTemp(Par[3]); + case 3: + param.v=Par[2]; + case 2: + setH(Par[0]); + setS(Par[1]); + } + } + else + { + setSuffix(S_RGB); + switch (i) //Number of params + { + case 3: RGB(Par[0],Par[1],Par[2]); + break; + case 4: RGBW(Par[0],Par[1],Par[2],Par[3]); + default:; + } + } + + break; + + // case CMD_UNKNOWN: //Not known command + // case CMD_JSON: //JSON input (not implemented yet + // cmd.cmdCode=CMD_VOID; + // break; + + default: //some known command + //case CMD_VOID: + //case CMD_UP: + //case CMD_DN: + { + itemCmd num =getNumber((char **) &_cmd); + cmd.itemArgType=num.getArgType(); + param.aslong=num.param.aslong; + if (cmd.cmdCode) setSuffix(S_CMD); + } + } //switch + //debugOut(); } itemCmd itemCmd::setChanType(short chanType) diff --git a/lighthub/main.cpp b/lighthub/main.cpp index c3ef630..29c1841 100644 --- a/lighthub/main.cpp +++ b/lighthub/main.cpp @@ -148,6 +148,7 @@ volatile unsigned long timerCount=0; volatile int16_t timerNumber=-1; volatile int8_t timerHandlerBusy=0; volatile uint32_t cryptoSalt=0; +volatile uint32_t ultrasonicInputCheck=0; //uint32_t timerCtr=0; aJsonObject *pollingItem = NULL; @@ -778,14 +779,30 @@ lan_status lanLoop() { lanStatus=READ_RE_CONFIG; break; + case AWAITING_CONFIG: + if (isTimeOver(timerLanCheckTime,millis(),TIMEOUT_REINIT_NOT_CONFIGURED)) + lanStatus=DO_REINIT; + break; + case READ_RE_CONFIG: // Restore config from FLASH, re-init LAN - if (loadConfigFromEEPROM()) lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER; - else + switch (loadConfigFromEEPROM()) + { + case 1: lanStatus = IP_READY_CONFIG_LOADED_CONNECTING_TO_BROKER; + break; + + case -1: //Temporary busy if (isTimeOver(timerLanCheckTime,millis(),TIMEOUT_RELOAD)) { errorSerial< timerInputCheck) if (isTimeOver(timerInputCheck,millis(),INTERVAL_CHECK_INPUT)) { + if ((cause != CHECK_INTERRUPT) && isTimeOver(ultrasonicInputCheck,millis(),INTERVAL_CHECK_ULTRASONIC)) needCheckUltrasonic=true; + aJsonObject *input = inputs->child; while (input) { if (input->type == aJson_Object) { + + Input in(input); + in.Poll(cause); + if (needCheckUltrasonic) in.Poll(CHECK_ULTRASONIC); + // Check for nested inputs aJsonObject * inputArray = aJson.getObjectItem(input, "act"); if (inputArray && (inputArray->type == aJson_Array)) @@ -2974,6 +2999,7 @@ configLocked++; { Input in(inputObj,input); in.Poll(cause); + if (needCheckUltrasonic) in.Poll(CHECK_ULTRASONIC); //yield(); inputObj = inputObj->next; @@ -2982,14 +3008,16 @@ configLocked++; } else { - Input in(input); - in.Poll(cause); + //Input in(input); + //in.Poll(cause); + //if (needCheckUltrasonic) in.Poll(CHECK_ULTRASONIC); } } //yield(); input = input->next; } - if (cause != CHECK_INTERRUPT) timerInputCheck = millis();// + INTERVAL_CHECK_INPUT; + if (cause != CHECK_INTERRUPT) timerInputCheck = millis(); + if (needCheckUltrasonic) {ultrasonicInputCheck = millis(); needCheckUltrasonic=false;} inCache.invalidateInputCache(); } configLocked--; diff --git a/lighthub/main.h b/lighthub/main.h index 82dde7c..c695af2 100644 --- a/lighthub/main.h +++ b/lighthub/main.h @@ -232,7 +232,8 @@ enum lan_status { DO_NOTHING = -15, DO_GET = -16, GET = -17, - GET_IN_PROGRESS = 18 + GET_IN_PROGRESS = 18, + AWAITING_CONFIG = 19 }; extern lan_status lanStatus; diff --git a/lighthub/options.h b/lighthub/options.h index d117a17..17f65b4 100644 --- a/lighthub/options.h +++ b/lighthub/options.h @@ -77,6 +77,7 @@ #define TIMEOUT_REINIT 5000UL #define TIMEOUT_RELOAD 30000UL #define TIMEOUT_RETAIN 8000UL +#define TIMEOUT_REINIT_NOT_CONFIGURED 120000UL #define INTERVAL_1W 5000UL #define PERIOD_THERMOSTAT_FAILED (600 * 1000UL) @@ -120,6 +121,8 @@ #define INTERVAL_CHECK_INPUT 11 #endif +#define INTERVAL_CHECK_ULTRASONIC 100 + #ifndef TIMER_CHECK_INPUT #define TIMER_CHECK_INPUT 15 #endif diff --git a/lighthub/seekablestream.h b/lighthub/seekablestream.h index e1fdbe1..b8423b2 100644 --- a/lighthub/seekablestream.h +++ b/lighthub/seekablestream.h @@ -22,7 +22,7 @@ virtual unsigned int seek(unsigned int _pos = 0) = 0; virtual int open(String _filename, char mode) = 0; virtual void close() = 0; virtual uint16_t getContentType() {return contentType;}; -virtual void putEOF() {if (textMode) write (EOFchar);}; +virtual void putEOF() {if (textMode) {write (EOFchar);textMode=false;}}; }; #endif \ No newline at end of file diff --git a/lighthub/utils.cpp b/lighthub/utils.cpp index 97ba569..ad4dea6 100644 --- a/lighthub/utils.cpp +++ b/lighthub/utils.cpp @@ -110,7 +110,7 @@ return !err; // chan is pointer to pointer to string // Function return first retrived integer and move pointer to position next after ',' -long getInt(char **chan) { +long getIntFromStr(char **chan) { if (chan && *chan && **chan) { //Skip non-numeric values diff --git a/lighthub/utils.h b/lighthub/utils.h index 1220a66..91a86e8 100644 --- a/lighthub/utils.h +++ b/lighthub/utils.h @@ -53,7 +53,7 @@ void PrintBytes(uint8_t* addr, uint8_t count, bool newline); void SetBytes(uint8_t* addr, uint8_t count, char * out); bool SetAddr(char * in, uint8_t* addr); uint8_t HEX2DEC(char i, bool* err); -long getInt(char ** chan); +long getIntFromStr(char **chan); itemCmd getNumber(char ** chan); unsigned long freeRam (); void parseBytes(const char* str, char separator, byte* bytes, int maxBytes, int base);