Skip to content

Commit

Permalink
Merge pull request #143 from arkedge/feature/rename-driver-instance
Browse files Browse the repository at this point in the history
Rename driver_instances -> component_service
  • Loading branch information
sksat authored Oct 13, 2023
2 parents bdfcdad + 57cb2a7 commit 299ffe4
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 23 deletions.
14 changes: 7 additions & 7 deletions component_driver/driver_super.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ typedef struct CDS_StreamConfig CDS_StreamConfig;
* @note 初期化関数呼び出し時については, CDS_INIT_ERR_CODE を用いること
* @note 受信関数呼び出し時については, CDS_REC_ERR_CODE を用いること
* @note 接続先機器へ送るCmd呼び出し時については, CDS_CMD_ERR_CODE を用いること
* @note DI の Cmd の返り値である CCP_EXEC_STS との整合性を多少意識している
* @note CSRV の Cmd の返り値である CCP_EXEC_STS との整合性を多少意識している
* @note CCP_EXEC_STS への変換は CDS_conv_driver_err_to_ccp_cmd_ret を用いる
* @note より詳細なエラー情報を返したい場合は, ComponentDriver ごとに独自 enum を定義して良い
*/
Expand Down Expand Up @@ -91,17 +91,17 @@ typedef enum

/**
* @enum CDS_CMD_ERR_CODE
* @brief 各DIが ComponentDriver にコマンドを送るときに,統一的に使うコード
* @brief 各 CSRV が ComponentDriver にコマンドを送るときに,統一的に使うコード
* @note uint8_t を想定
* @note DI の Cmd の返り値である CCP_EXEC_STS との整合性を多少意識している
* @note CSRV の Cmd の返り値である CCP_EXEC_STS との整合性を多少意識している
* @note CCP_EXEC_STS への変換は CDS_conv_cmd_err_to_ccp_cmd_ret を用いる
*/
typedef enum
{
CDS_CMD_OK = 0, //!< OKは0であることを保証する
CDS_CMD_ILLEGAL_CONTEXT = 1, //!< CCP_EXEC_ILLEGAL_CONTEXT に対応.DIでみることも多いはず.HW依存部は ComponentDriver でみる
CDS_CMD_ILLEGAL_CONTEXT = 1, //!< CCP_EXEC_ILLEGAL_CONTEXT に対応.CSRV でみることも多いはず.HW依存部は ComponentDriver でみる
CDS_CMD_ILLEGAL_PARAMETER = 2, //!< CCP_EXEC_ILLEGAL_PARAMETER に対応.ヒーターの個数など,HW 依存部は ComponentDriver でみる
CDS_CMD_ILLEGAL_LENGTH = 3, //!< CCP_EXEC_ILLEGAL_LENGTH に対応.これは基本的にはDIで見るはずなので,使われないことを想定
CDS_CMD_ILLEGAL_LENGTH = 3, //!< CCP_EXEC_ILLEGAL_LENGTH に対応.これは基本的には CSRV で見るはずなので,使われないことを想定
CDS_CMD_DRIVER_SUPER_ERR = 4, //!< ComponentDriverSuper 側,つまり配送の低レイヤーでエラーが起きた場合
CDS_CMD_UNKNOWN_ERR = 255
} CDS_CMD_ERR_CODE;
Expand Down Expand Up @@ -661,7 +661,7 @@ void CDS_nullify_stream_rec_buffers(CDS_StreamRecBuffer* rx_buffers[CDS_STREAM_M
/**
* @brief CDS_DRIVER_ERR_CODE から CCP_CmdRet への変換関数
*
* DI から ComponentDriver の関数を呼び出したときのエラーコードの変換に用いる
* CSRV から ComponentDriver の関数を呼び出したときのエラーコードの変換に用いる
* @note 汎用 Util 関数
* @param CDS_DRIVER_ERR_CODE
* @return CCP_CmdRet
Expand All @@ -671,7 +671,7 @@ CCP_CmdRet CDS_conv_driver_err_to_ccp_cmd_ret(CDS_DRIVER_ERR_CODE code);
/**
* @brief CDS_CMD_ERR_CODE から CCP_CmdRet への変換関数
*
* DI から ComponentDriver の関数を呼び出したときのエラーコードの変換に用いる
* CSRV から ComponentDriver の関数を呼び出したときのエラーコードの変換に用いる
* @note 汎用 Util 関数
* @param CDS_CMD_ERR_CODE
* @return CCP_CmdRet
Expand Down
2 changes: 1 addition & 1 deletion docs/component_driver/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Component Driver とは,各コンポーネントとの通信において, HW 依存部分を吸収するためのレイヤーである.
[DriverSuper](https://github.com/arkedge/c2a-core/blob/develop/component_driver/driver_super.h) と呼ばれる共通の IF を各ドライバが継承することで,統一的で安全な実装が可能になる.

また,これを Application へと抽象化したものが, Application Layer にある DI (Driver Instance) である.
また,これを Application へと抽象化したものが, Application Layer にある CSRV (Component Service) である.

実装方法は,基本的には [driver_super.h](https://github.com/arkedge/c2a-core/blob/develop/component_driver/driver_super.h) をみればわかるようにしてあるが,現時点で

Expand Down
30 changes: 15 additions & 15 deletions docs/general/coding_rule.md
Original file line number Diff line number Diff line change
Expand Up @@ -259,23 +259,23 @@ int Cmd_APP_DR_SET_PARAMS(const CommonCmdPacket* packet);
```


### applications/driver_instances
- ファイル名は `di_${IFやデバイス名}`
### applications/component_service
- ファイル名は `csrv_${IFやデバイス名}`
- Driver 構造体名とそのインスタンス名を一致させる(スタイルを除く)
- 特定のドライバ構造体のインスタンスが複数ある場合は,配列にまとめる.
- 単一の場合は,スカラ形式を推奨するが,要素1の配列にしても良い.
- その場合,その C2A 内ではすべてのドライバ構造体のインスタンスは配列にすること.
- 接頭辞は `DI_${IFやデバイス名}`
- 接頭辞は `CSRV_${IFやデバイス名}`

例:
```cpp
ファイル名
di_pcdu.c/h
di_xtx.c/h
csrv_pcdu.c/h
csrv_xtx.c/h

接頭辞
DI_PCDU_
DI_XTX_
CSRV_PCDU_
CSRV_XTX_

インスタンス名
static PCDU_Driver pcdu_driver_;
Expand All @@ -284,15 +284,15 @@ static XTX_Driver xtx_driver_;
const XTX_Driver* const xtx_driver = &xtx_driver_;
```

複数インスタンス例
複数 Component Service 例
```cpp
typedef enum
{
DI_RM3100_IDX_ON_AOBC = 0,
DI_RM3100_IDX_ON_HOGE,
DI_RM3100_IDX_ON_FUGA,
DI_RM3100_IDX_MAX,
} DI_RM3100_IDX;
CSRV_RM3100_IDX_ON_AOBC = 0,
CSRV_RM3100_IDX_ON_HOGE,
CSRV_RM3100_IDX_ON_FUGA,
CSRV_RM3100_IDX_MAX,
} CSRV_RM3100_IDX;

RM3100_Driver rm3100_driver[RM3100_IDX_MAX];
```
Expand Down Expand Up @@ -322,14 +322,14 @@ const MwFlash* const mw_flash = &mw_flash_;
`AR_APP_ID` enumの接頭辞は,
- `AR_NOP`: NOP
- `AR_APP_HOGE`: UserDefined
- `AR_DI_HOGE`: DI
- `AR_CSRV_HOGE`: Component Service
- `AR_WM_HOGE`: MW

とし,基本的には `HOGE` は ファイル名にする.

つまり,
- applications/user_defined/data_recorder.h → `AR_APP_DATA_RECORDER`
- applications/driver_instances/di_pcdu.h → `AR_DI_PCDU`
- applications/component_service/csrv_pcdu.h → `AR_CSRV_PCDU`

となる.

Expand Down
31 changes: 31 additions & 0 deletions script/migration/v4-rename-driver-instance.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash
# driver instances -> component service

# C2A user code
echo "rename C2A user code: driver_instances -> component_service"

echo "rename dir: src/src_user/applications/driver_instances -> src/src_user/applications/component_service"
mv src/src_user/applications/driver_instances src/src_user/applications/component_service

di_srcs=$(ls src/src_user/applications/component_service)

echo "rename files: di_* -> csrv_*"
for di_src in $di_srcs; do
echo " $di_src -> csrv_${di_src#di_}"
mv src/src_user/applications/component_service/$di_src src/src_user/applications/component_service/csrv_${di_src#di_}
done

echo "rename path: driver_instances -> component_service"
find . -name "*" -not -path "*/.git/*" -type f -print0 | xargs -0 sed -i -e "s#driver_instances#component_service#g"

echo "rename file path: di_* -> csrv_*"
for di_src in $di_srcs; do
echo " $di_src -> csrv_${di_src#di_}"
find . -name "*" -not -path "*/.git/*" -type f -print0 | xargs -0 sed -i -e "s#$di_src#csrv_${di_src#di_}#g"
done

echo "rename source: DI_ -> CSRV_"
find . -name "*" -not -path "*/.git/*" -type f -print0 | xargs -0 sed -i -e "s#DI_#CSRV_#g"

git restore src/src_user/Settings/tlm_cmd/data_base/CMD_DB/*.xlsm
git restore src/src_user/Settings/tlm_cmd/data_base/TLM_DB/*.xlsm

0 comments on commit 299ffe4

Please sign in to comment.