diff --git a/src/posix/platform/radio_spinel.cpp b/src/posix/platform/radio_spinel.cpp index 630c4779c..2d3df4444 100644 --- a/src/posix/platform/radio_spinel.cpp +++ b/src/posix/platform/radio_spinel.cpp @@ -541,6 +541,24 @@ void RadioSpinel::Init(const char *aRadioFile, const char *aRadioConfig) SuccessOrExit(error = Get(SPINEL_PROP_HWADDR, SPINEL_DATATYPE_UINT64_S, &gNodeId)); gNodeId = ot::Encoding::BigEndian::HostSwap64(gNodeId); + { + unsigned int versionMajor; + unsigned int versionMinor; + + SuccessOrExit(error = Get(SPINEL_PROP_PROTOCOL_VERSION, + (SPINEL_DATATYPE_UINT_PACKED_S SPINEL_DATATYPE_UINT_PACKED_S), &versionMajor, + &versionMinor)); + + if ((versionMajor != SPINEL_PROTOCOL_VERSION_THREAD_MAJOR) || + (versionMinor != SPINEL_PROTOCOL_VERSION_THREAD_MINOR)) + { + otLogCritPlat(mInstance, "Spinel version mismatch - PosixApp:%d.%d, RCP:%d.%d", + SPINEL_PROTOCOL_VERSION_THREAD_MAJOR, SPINEL_PROTOCOL_VERSION_THREAD_MINOR, versionMajor, + versionMinor); + ExitNow(error = OT_ERROR_FAILED); + } + } + { unsigned int caps; SuccessOrExit(error = Get(SPINEL_PROP_RADIO_CAPS, SPINEL_DATATYPE_UINT_PACKED_S, &caps));