ヘッダ(*.h)に定義したテーブルでの出力制御について
現在、いわゆる組み込み制御の技術者としてC言語によるマイコン制御のソフトウェア開発を行っていて、スイッチの出力を制御する仕組みを考えています。
状態(2状態):S00、S01
スイッチ(2スイッチ):SW1、SW2
出力:ON、OFF
実際には状態もスイッチも出力もこれより多く複雑なのですが、簡単に説明させていただきます。
自分としては簡単にswitch文で制御すればいいだろうと思い、設計していたのですが、それでは無駄にコーディングが必要になってしまうのでダメだと上司に言われ、ヘッダ(sw_out.h)でテーブルを持って、Cソース(sw_out.c)では簡単なコードにできないか?と言われました。その方が後のメンテナンスが簡単だと言われました。
上司の言っていることは分かるのですが、実際にコードとしてどのように記述したらいいのか分かりません。
そこで、このような制御を実現するC言語(*.h,*.c)の記述の方法を分かる方、御教授よろしくお願いします。
以下に、スイッチ出力の判定を行うテーブルと自分の最初の考え方のソースコードを記します。
******S00****S01**
SW0*SW_ON**SW_OFF*
SW1*SW_OFF*SW_ON**
[sw_out.h]
#define S00 0x00 /* 状態0 */
#define S01 0x01 /* 状態1 */
#define SW0 0x00 /* スイッチ0 */
#define SW1 0x01 /* スイッチ1 */
#define SW_OFF 0x00 /* 出力OFF */
#define SW_ON 0x01 /* 出力ON */
[sw_out.c]
#include "sw_out.h"
int sw_out(int state, int sw)
{
int out;
out = SW_OFF;
switch(state){
case S00:
switch(sw){
case SW0:
out = SW_ON;
break;
case SW1:
out = SW_OFF;
break;
}
break;
case S01:
switch(sw){
case SW0:
out = SW_OFF;
break;
case SW1:
out = SW_ON;
break;
}
break;
}
return out;
}
お礼
返事遅くなり申し訳ありません。 まだ、試して見る機会無いので、お盆休みにトライします! どうもありがとうございます。