modules/openthread/プラットフォーム/radio_spinel.cppにこれを追加しました
+otError otPlatRadioGetVendorMaxTransmitPower(otInstance *aInstance, uint8_t *aPower)
+{
+ otError エラー;
+
+ OT_UNUSED_VARIABLE(インスタンス);
+
+ if (psRadioSpinel == NULL)
+ {
+ otLogWarnPlat("最大tx取得のpsRadioSpinelがnullです");
+ OT_ERROR_GENERIC を返します。
+ }
+
+ VerifyOrExit(aPower != NULL、エラー = OT_ERROR_INVALID_ARGS);
+ エラー = psRadioSpinel->GetVendorMaxTransmitPower(*aPower);
+
+終了:
+ エラーを返します。
+}
+
+otError otPlatRadioSetVendorMaxTransmitPower(otInstance *aInstance, uint8_t aPower)
+{
+ if (psRadioSpinel == NULL)
+ {
+ otLogWarnPlat("最大送信電力を設定するためのpsRadioSpinelがnullです");
+ OT_ERROR_GENERIC を返します。
+ }
+
+ OT_UNUSED_VARIABLE(インスタンス);
+ psRadioSpinel->SetVendorMaxTransmitPower(aPower) を返します。
+}
+
openthread モジュールはベンダー フックをサポートするように変更されました。
変更: include/openthread/プラットフォーム/radio.h
変更: src/lib/spinel/CMakeLists.txt
変更: src/lib/spinel/radio_spinel.cpp
変更: src/lib/spinel/radio_spinel.hpp
変更: src/lib/spinel/spinel.h
変更: src/lib/spinel/spinel_driver.cpp
これは spinel.h に追加されました。
SPINEL_PROP_VENDOR_NXP_GET_SET_TXPOWERLIMIT_CMD = (SPINEL_PROP_VENDOR__BEGIN + 0x10B)、
int main ( void )
{
LOG_INF ( "nxp_ot_cli エントリ" );
k_sleep ( K_MSEC ( 500 ));
ot_context = openthread_get_default_context ();
__ASSERT ( ot_context != NULL , "致命的: OpenThread コンテキストが利用できません!" );
ot_instance = openthread_get_default_instance ();
__ASSERT ( ot_instance != NULL , "致命的: OpenThread インスタンスが利用できません!" );
LOG_INF ( "オープンスレッドリーダーの重みを設定" );
otThreadSetLocalLeaderWeight ( ot_instance , 2 );
LOG_INF ( "リーダーウェイトの設定が完了しました" );
k_sleep ( K_MSEC ( 500 ));
LOG_INF ( "OpenThread 無線の最大送信電力を 12/2 dBm に設定しています..." );
otError err1 = otPlatRadioSetVendorMaxTransmitPower ( ot_instance , 12 );
LOG_INF ( "オープンスレッド無線の最大送信電力を設定: %s (err= %d )" , otThreadErrorToString ( err1 ), err1 );
k_sleep ( K_MSEC ( 500 ));
uint8_t aPower = 0 ;
LOG_INF ( "OpenThread 無線送信電力を取得しています..." );
otError err2 = otPlatRadioGetVendorMaxTransmitPower ( ot_instance 、 & aPower );
もし(( aPower % 2 == 0 ))
{
LOG_INF ( "オープンスレッド無線送信電力は%uまたは%u .0 dBm、 %s (err= %d ) です" 、 aPower 、 aPower / 2 、 otThreadErrorToString ( err2 ) 、 err2 );
}
それ以外
{
LOG_INF ( "オープンスレッド無線送信電力は%uまたは%u .5 dBm、 %s (err= %d ) です" 、 aPower 、 aPower / 2 、 otThreadErrorToString ( err2 ) 、 err2 );
}
//LOG_INF("今すぐループ");
一方( 1 )
{
LOG_INF ( "今すぐループ" );
k_sleep ( K_MSEC ( 1000 ));
}
0を返します。
}