この投稿では、私が勧める、SW状態毎のSWコンポーネント構成について説明します。
SW状態毎のSWコンポーネント構成方法は、下記ののようにSW状態ごとにSWコンポーネントを分割する方法とSW状態ごとの機能をSWコンポーネントに包括する方法があります。

SW状態ごとにSWコンポーネントを分割する方法
SW状態ごとにSWコンポーネントを分割する方法とは、SW状態の機能に合わせてSWコンポーネントの機能を分割し、SW状態でSWコンポーネントを呼び出す方法です。
特徴:
- SW状態の機能およびSWコンポーネント構成が明確になります
- SW状態遷移時の処理および初期値を設計が容易になります
- SW状態遷移設計の頻度が高くなります
- SW状態ごとでSWコンポーネントを管理する必要があります
例:3軸センサICのSWコンポーネントを下記のように分け、SW状態によって呼び出すSWコンポーネントを分ける。
- Power On Reset: 3軸センサIC初期化コンポーネント
- Normal Control: 3軸センサ計測コンポーネント
- Fail-Safe mode: 3軸センサのフェイルセーフ・コンポーネント
- Power Off sequence: 3軸センサICのPower Offコンポーネント
SW状態ごとの機能をSWコンポーネントに包括する方法
SW状態ごとの機能をSWコンポーネントに包括する方法とは、SW状態ごとの機能を関数にし、SW状態に合わせてそれらの関数を呼び出す方法です。
特徴:
- モジュール性および移植性が向上します
- SWコンポーネントが複雑になります
- SW状態遷移設計が各SWコンポーネントの詳細設計で行うことが多くなります
例:3軸センサICのSWコンポーネントのSW状態ごとの関数を下記のように分ける。
- Power On Reset: 3軸センサIC初期化関数
- Normal Control: 3軸センサ計測関数
- Fail-Safe mode: 3軸センサのフェイルセーフ関数
- Power Off sequence: 3軸センサICのPower Off関数