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) 反転させることにより、疑似リセットクロックを生成します。

その後は、通常の起動手順に復帰し、以降はこれまでと同様の動作をします。

Committer:
gaku_miyagawa
Date:
Mon Jun 18 02:55:38 2018 +0000
Revision:
2:de22987be9ba
Parent:
0:d895cd1cd897
SBU SPECIAL

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:d895cd1cd897 1 /**
Rhyme 0:d895cd1cd897 2 * Copyright 2015 Afero, Inc.
Rhyme 0:d895cd1cd897 3 *
Rhyme 0:d895cd1cd897 4 * Licensed under the Apache License, Version 2.0 (the "License");
Rhyme 0:d895cd1cd897 5 * you may not use this file except in compliance with the License.
Rhyme 0:d895cd1cd897 6 * You may obtain a copy of the License at
Rhyme 0:d895cd1cd897 7 *
Rhyme 0:d895cd1cd897 8 * http://www.apache.org/licenses/LICENSE-2.0
Rhyme 0:d895cd1cd897 9 *
Rhyme 0:d895cd1cd897 10 * Unless required by applicable law or agreed to in writing, software
Rhyme 0:d895cd1cd897 11 * distributed under the License is distributed on an "AS IS" BASIS,
Rhyme 0:d895cd1cd897 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Rhyme 0:d895cd1cd897 13 * See the License for the specific language governing permissions and
Rhyme 0:d895cd1cd897 14 * limitations under the License.
Rhyme 0:d895cd1cd897 15 */
Rhyme 0:d895cd1cd897 16
Rhyme 0:d895cd1cd897 17 #ifndef STATUS_COMMAND_H__
Rhyme 0:d895cd1cd897 18 #define STATUS_COMMAND_H__
Rhyme 0:d895cd1cd897 19
Rhyme 0:d895cd1cd897 20 #include "mbed.h"
Rhyme 0:d895cd1cd897 21
Rhyme 0:d895cd1cd897 22 class StatusCommand {
Rhyme 0:d895cd1cd897 23 public:
Rhyme 0:d895cd1cd897 24
Rhyme 0:d895cd1cd897 25 StatusCommand();
Rhyme 0:d895cd1cd897 26
Rhyme 0:d895cd1cd897 27 StatusCommand(uint16_t bytesToSend);
Rhyme 0:d895cd1cd897 28
Rhyme 0:d895cd1cd897 29 ~StatusCommand();
Rhyme 0:d895cd1cd897 30
Rhyme 0:d895cd1cd897 31 uint16_t getSize();
Rhyme 0:d895cd1cd897 32
Rhyme 0:d895cd1cd897 33 uint16_t getBytes(int *bytes);
Rhyme 0:d895cd1cd897 34
Rhyme 0:d895cd1cd897 35 uint8_t calcChecksum();
Rhyme 0:d895cd1cd897 36
Rhyme 0:d895cd1cd897 37 void setChecksum(uint8_t checksum);
Rhyme 0:d895cd1cd897 38
Rhyme 0:d895cd1cd897 39 uint8_t getChecksum();
Rhyme 0:d895cd1cd897 40
Rhyme 0:d895cd1cd897 41 void setAck(bool ack);
Rhyme 0:d895cd1cd897 42
Rhyme 0:d895cd1cd897 43 void setBytesToSend(uint16_t bytesToSend);
Rhyme 0:d895cd1cd897 44
Rhyme 0:d895cd1cd897 45 uint16_t getBytesToSend();
Rhyme 0:d895cd1cd897 46
Rhyme 0:d895cd1cd897 47 void setBytesToRecv(uint16_t bytesToRecv);
Rhyme 0:d895cd1cd897 48
Rhyme 0:d895cd1cd897 49 uint16_t getBytesToRecv();
Rhyme 0:d895cd1cd897 50
Rhyme 0:d895cd1cd897 51 bool equals(StatusCommand *statusCommand);
Rhyme 0:d895cd1cd897 52
Rhyme 0:d895cd1cd897 53 bool isValid();
Rhyme 0:d895cd1cd897 54
Rhyme 0:d895cd1cd897 55 void dump();
Rhyme 0:d895cd1cd897 56
Rhyme 0:d895cd1cd897 57 void dumpBytes();
Rhyme 0:d895cd1cd897 58
Rhyme 0:d895cd1cd897 59 private:
Rhyme 0:d895cd1cd897 60
Rhyme 0:d895cd1cd897 61 uint8_t _cmd;
Rhyme 0:d895cd1cd897 62 uint16_t _bytesToSend;
Rhyme 0:d895cd1cd897 63 uint16_t _bytesToRecv;
Rhyme 0:d895cd1cd897 64 uint8_t _checksum;
Rhyme 0:d895cd1cd897 65 };
Rhyme 0:d895cd1cd897 66
Rhyme 0:d895cd1cd897 67 #endif // STATUS_COMMAND_H__