本帖最后由 两只袜子 于 2020-12-14 09:37 编辑
1、在和其他的开发板过程中,遇到的一个问题就是license的使用。
在安装和使用的过程中,有一个申请证书的环节。那么分析一下这个原理。
2、首先需要确定的是这个license不是必须要申请的,只是在使用ST提供的姿态识别时才需要使用。
就是上面这几个高级的功能,在程序中,成为advanced功能的部分。和提供源码的部分不同的是,这些已经封装为库使用,不能直接编辑代码,需要查手册来使用其中的功能。当然,这些功能还是比较方便的,如识别double click,突然摔倒,还有携带位置的监测。这些非常适合可穿戴的应用,所以,可以非常神速地开发和部署传感器应用中比较难的部分,而且还能保证程序质量。
3、关于license,是免费提供,因为其中的申请是免费的,只要使用对应的申请软件就好。
这个license返回一封邮件,包括一组加密的数据,应该是结合板卡的特征值计算出来的。在程序中对这个payload进行赋值,以便后续使用。
4、那么在程序中,是需要如何使用这个license呢,那么是有一个payload,在调用这些自动识别的功能时,必须要先读取并校验这个license才能后续进行,代码虽长,不过逻辑很清楚,如下参考。
- InitMetaDataManager((void *)known_OsxLic,MDM_DATA_TYPE_LIC,NULL);
- /* Enable all the osx Motion License found on Meta Data Manager */
- {
- int32_t Index=0;
- while(known_OsxLic[Index].LicEnum!=OSX_END) {
- MDM_PayLoadLic_t *PayLoad = (MDM_PayLoadLic_t *) MDM_LicTable[known_OsxLic[Index].LicEnum].Address;
- if(PayLoad->osxLicenseInitialized) {
- switch(known_OsxLic[Index].LicEnum) {
- case OSX_MOTION_FX:
- MCR_OSX_COPY_LICENSE_FROM_MDM(osx_mfx_license,PayLoad->osxLicense);
- MotionFX_License_init(PayLoad);
- break;
- case OSX_MOTION_AR:
- MCR_OSX_COPY_LICENSE_FROM_MDM(osx_mar_license,PayLoad->osxLicense);
- MotionAR_License_init(PayLoad);
- break;
- case OSX_MOTION_CP:
- MCR_OSX_COPY_LICENSE_FROM_MDM(osx_mcp_license,PayLoad->osxLicense);
- MotionCP_License_init(PayLoad);
- break;
- case OSX_MOTION_GR:
- MCR_OSX_COPY_LICENSE_FROM_MDM(osx_mgr_license,PayLoad->osxLicense);
- MotionGR_License_init(PayLoad);
- break;
- case OSX_MOTION_PM:
- MCR_OSX_COPY_LICENSE_FROM_MDM(osx_mpm_license,PayLoad->osxLicense);
- MotionPM_License_init(PayLoad);
- break;
- #ifdef OSX_ENABLE_MOTIONID
- case OSX_MOTION_ID:
- MCR_OSX_COPY_LICENSE_FROM_MDM(osx_mid_license,PayLoad->osxLicense);
- MotionID_License_init(PayLoad);
- break;
- #endif /* OSX_ENABLE_MOTIONID */
- default:
- /* Only for removing the GCC warning */
- OSX_BMS_PRINTF("Should never reach this point...\r\n");
- }
- #ifdef OSX_BMS_LICENSE_H_FILE
- } else {
- switch(known_OsxLic[Index].LicEnum) {
- case OSX_MOTION_FX:
- MotionFX_License_init(PayLoad);
- break;
- case OSX_MOTION_AR:
- MotionAR_License_init(PayLoad);
- break;
- case OSX_MOTION_CP:
- MotionCP_License_init(PayLoad);
- break;
- case OSX_MOTION_GR:
- MotionGR_License_init(PayLoad);
- break;
- case OSX_MOTION_PM:
- MotionPM_License_init(PayLoad);
- break;
- #ifdef OSX_ENABLE_MOTIONID
- case OSX_MOTION_ID:
- MotionID_License_init(PayLoad);
- break;
- #endif /* OSX_ENABLE_MOTIONID */
- }
- }
- #else /* OSX_BMS_LICENSE_H_FILE */
- }
- #endif /* OSX_BMS_LICENSE_H_FILE */
- Index++;
- }
- }
5、如果不打算使用这些库,要自己设计识别特征,或者就是直接读取参数,那么,这个license就可以不用,这段代码也可以不必嵌入在程序中。
|