I2C hang recover function added
Dependencies: UniGraphic mbed vt100
In this version, check_i2c_pins function was added in edge_mgr.cpp.
プログラムの起動時、I2Cモジュールを初期化する前に、I2Cに使用するピンの電位を確認し
もし一方でも Low に張り付いていた場合、SCL を GPIO 出力に設定して
所定回数 (I2C_UNLOCK_TRIAL_CYCLE) 反転させることにより、疑似リセットクロックを生成します。
その後は、通常の起動手順に復帰し、以降はこれまでと同様の動作をします。
afLib/Command.h
- Committer:
- Rhyme
- Date:
- 2018-04-03
- Revision:
- 0:d895cd1cd897
File content as of revision 0:d895cd1cd897:
/** * Copyright 2015 Afero, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef COMMAND_H__ #define COMMAND_H__ #include "mbed.h" //wsugi #include <string> //wsugi using namespace std; //wsugi #define SPI_CMD_MAX_LEN 256 #define UPDATE_REASON_UNKNOWN 0 #define UPDATE_REASON_LOCAL_UPDATE 1 #define UPDATE_REASON_SERVICE_SET 2 #define UPDATE_REASON_MCU_SET 3 #define UPDATE_REASON_RELINK 4 #define UPDATE_REASON_REBOOT 5 class Command { public: Command(uint16_t len, uint8_t *bytes); Command(uint8_t requestId, const char *str); Command(uint8_t requestId, uint8_t cmd, uint16_t attrId); Command(uint8_t requestId, uint8_t cmd, uint16_t attrId, uint16_t valueLen, uint8_t *value); Command(uint8_t requestId, uint8_t cmd, uint16_t attrId, uint8_t status, uint8_t reason, uint16_t valueLen, uint8_t *value); Command(); ~Command(); uint8_t getCommand(); uint8_t getReqId(); uint16_t getAttrId(); uint16_t getValueLen(); void getValue(uint8_t *value); uint8_t *getValueP(); uint16_t getSize(); uint16_t getBytes(uint8_t *bytes); bool isValid(); void dump(); void dumpBytes(); private: uint8_t getVal(char c); int strToValue(char *valueStr, uint8_t *value); uint8_t strToCmd(char *cmdStr); uint16_t strToAttrId(char *attrIdStr); uint16_t _len; uint8_t _cmd; uint8_t _requestId; uint16_t _attrId; uint8_t _status; uint8_t _reason; uint16_t _valueLen; uint8_t *_value; char _printBuf[256]; }; #endif // COMMAND_H__