LoRa Basics™Modem用户手册v1.0文档

命令序列

本章描述启用LoRa Basics™Modem提供的功能所需的命令序列。

重置和初始化系统

为了重置LoRa Basics Modem,用户首先必须通过调用来执行初始化smtc_modem_init (),其中请求两个参数:

  • 要使用的无线电(到目前为止,LR1110是唯一支持的无线电收发器)

  • 从调制解调器获取事件的回调

后先打电话到smtc_modem_run_engine (),事件SMTC_MODEM_EVENT_RESET将被触发,以让用户知道调制解调器现在可以使用了。

强烈建议在初始化和事件之间不要调用任何与调制解调器相关的命令。如果这样做,LoRa基础调制解调器可能有未定义的行为。

获取版本信息

可以从API中获取各种信息:

  • smtc_modem_get_modem_version ()以获取LoRa Basics调制解调器版本

  • smtc_modem_get_lorawan_version ()在LoRa Basics Modem中实现LoRaWAN®版本

  • smtc_modem_get_regional_params_version ()获取在LoRa基础调制解调器中实现的LoRaWAN区域参数版本

获取事件

初始化期间共享的回调允许通知用户传入的事件。当LoRa Basics Modem调用回调时,用户可以通过调用来检索挂起的事件smtc_modem_get_event ()

用户可以通过连续调用来解栈挂起的事件smtc_modem_get_event ()直到返回SMTC_MODEM_EVENT_NONE。

加入LoRaWAN®网络

在启动连接过程之前,用户必须设置一些LoRaWAN®参数-顺序不重要:

  • 洛拉湾地区与smtc_modem_set_region ()(只能在调制解调器未处于连接或连接状态时更改)

  • LoRaWAN班带smtc_modem_set_class ()

用户可以通过以下功能配置eui和关键参数:

  • DevEUI与smtc_modem_set_deveui ()

  • JoinEUI与smtc_modem_set_joineui ()

  • AppKey与smtc_modem_set_nwkkey ()

用户还可以通过调用配置他们正在使用的网络类型-私有或公共smtc_modem_set_network_type ()

设置好所有参数后,用户可以通过调用开始加入LoRaWAN网络smtc_modem_join_network ().通过两个事件通知用户过程的演变:

  • SMTC_MODEM_EVENT_JOINED:接收到连接接受;连接过程结束

  • SMTC_MODEM_EVENT_JOINFAIL:连接请求后没有收到任何东西;连接过程继续进行

用户可以通过调用取消正在进行的连接过程或离开已连接的网络smtc_modem_leave_network ()

通过LoRaWAN发送数据

用户可以在连接时发送标准上行链路,具有以下功能:

  • smtc_modem_request_uplink ()

  • smtc_modem_request_emergency_uplink ()以最高优先级发送数据,同时摆脱占空比限制

  • smtc_modem_request_empty_uplink ()发送带有可选FPort字段的空负载;可以用来创造下行机会吗

管理LoRaWAN连接生命周期

接入LoRaWAN网络后,用户可以在连接过程中配置几个参数:

  • 通过调用ADR配置文件smtc_modem_adr_set_profile ()

  • 调用连接超时阈值smtc_modem_connection_timeout_set_thresholds ()

  • 每个未经确认的上行链路的传输数smtc_modem_set_nb_trans ()

请注意

上面提到的所有功能也都可以在加入网络之前调用。

也可以通过调用获得关于连接的信息:*占空比限制的当前状态(如果有的话)smtc_modem_get_duty_cycle_status ()*通过调用连接超时的当前状态smtc_modem_connection_timeout_get_current_values ()*调用下一个上行链路的最大大小smtc_modem_get_next_tx_max_payload ()*调用可用数据smtc_modem_get_available_datarates ()

用户也可以通过呼叫请求链路检查smtc_modem_lorawan_request_link_check ()

从网络服务器或应用程序服务器获取时间

用户可以配置LoRa Basics Modem自动进行时间同步:

  • 配置两个时间请求之间的间隔smtc_modem_time_set_sync_interval_s ()

  • 配置自上次同步以来的延迟,以认为该时间不再有效smtc_modem_time_set_sync_invalid_delay_s ()

  • (可选)配置ALCsync端口smtc_modem_time_set_alcsync_fport ()如果要使用的服务是SMTC_MODEM_TIME_ALC_SYNC

用户必须确保时间间隔小于去同步延迟时间。该延迟考虑了目标应用程序所容忍的最大时间偏差和时钟漂移。

所有参数设置完成后,用户可以通过调用选择并启动时间同步服务smtc_modem_time_start_sync_service ().只要打电话就可以随时停止smtc_modem_time_stop_sync_service ()

如果SMTC_MODEM_TIME_MAC_SYNC设置为smtc_modem_time_start_sync_service (),在以下情况下触发事件:

  • 当时间同步成功时(状态设置为SMTC_MODEM_EVENT_TIME_VALID)

如果SMTC_MODEM_TIME_ALC_SYNC设置为smtc_modem_time_start_sync_service (),在以下情况下触发该事件:

  • 当时间同步成功时(状态设置为SMTC_MODEM_EVENT_TIME_VALID)

  • 当时间同步不成功且本地时间没有同步时(状态设置为SMTC_MODEM_EVENT_TIME_NOT_VALID)

如果SMTC_MODEM_TIME_MAC_SYNC设置为smtc_modem_time_trigger_sync_request (),在以下情况下触发该事件:

  • 当时间同步成功时(状态设置为SMTC_MODEM_EVENT_TIME_VALID)

  • 当时间同步不成功且本地时间没有同步时(状态设置为SMTC_MODEM_EVENT_TIME_NOT_VALID)

  • 当时间同步请求没有得到响应,但本地时间仍然是同步的(状态设置为SMTC_MODEM_EVENT_TIME_VALID_BUT_NOT_SYNC)

用户可以通过调用获取当前时间smtc_modem_get_time ().在执行时间同步之前,它返回SMTC_MODEM_RC_NO_TIME。

除了定期发送的同步时间外,用户还可以通过调用请求同步时间smtc_modem_time_trigger_sync_request ().目前这只与SMTC_MODEM_TIME_MAC_SYNC兼容。

使用设备管理服务发送信息

在发起定期信息报告之前,用户必须设置几个参数;顺序不重要:

  • LoRaWAN FPort, withsmtc_modem_dm_set_fport ()

  • 要报告的字段,与smtc_modem_dm_set_info_fields ()

  • (可选)待上报的用户数据smtc_modem_dm_set_user_data ()-只有当SMTC_MODEM_DM_FIELD_APP_STATUS是user_data参数赋给smtc_modem_dm_set_info_fields ()

  • 两个定期信息报告之间的间隔smtc_modem_dm_set_info_interval ()

如果用户修改了两次设备管理信息周期报告的间隔时间,则会取消下一个计划的上行链路,并在新的间隔时间后调度一个新的上行链路。

除了定期发送设备管理信息外,用户还可以通过呼叫请求获得设备管理信息报告smtc_modem_dm_request_single_uplink ()哪些字段与设置的字段不同smtc_modem_dm_set_info_fields ()可报告。

使用设备管理服务更新年鉴

字段SMTC_MODEM_DM_FIELD_ALMANAC_STATUS在设备管理服务中具有特定的行为。启用时,可以使用smtc_modem_dm_set_info_fields ()smtc_modem_dm_request_single_uplink (),它将年鉴的当前状态发送到LoRa Cloud™调制解调器和地理定位服务,该服务可以在需要时决定触发增量更新。

更新完成时触发事件SMTC_MODEM_EVENT_ALMANAC_UPDATE。

该服务只兼容LR1110收发器。

使用流服务发送数据

用户可以流数据,并让LoRa Basics Modem处理MTU限制。

在初始化一个流之前,用户必须通过调用设置几个参数smtc_modem_stream_init ()

  • LoRaWAN FPort

  • 加密模式

  • 冗余率

配置完成后,用户可以通过调用将数据添加到流缓冲区smtc_modem_stream_add_data ().建议检查缓冲区中的可用空间smtc_modem_stream_status ()添加数据前。

当流缓冲区的最后一个字节被发送时,事件SMTC_MODEM_EVENT_STREAMDONE被触发。触发此事件是为了获取信息;在向流缓冲区添加数据之前,不需要等待它。

使用文件上传服务发送数据

用户最多可以发送2048个字节(称为一个文件),并让LoRa Basics Modem处理MTU限制。

在开始上传文件之前,用户必须通过调用设置几个参数smtc_modem_file_upload_init ()

  • 应用指数

  • 加密模式

  • 要发送的文件及其大小

  • 两个片段上传之间的延迟

配置完成后,用户可以通过调用启动转移smtc_modem_file_upload_start ().用户可以通过调用终止转移smtc_modem_file_upload_reset ()

事件SMTC_MODEM_EVENT_UPLOADDONE在以下情况下被触发:

  • LoRa云调制解调器和地理定位服务使用专用的下行消息(状态设置为SMTC_MODEM_EVENT_UPLOADDONE_SUCCESSFUL)来确认接收

  • 在最后一次上传之后(状态设置为SMTC_MODEM_EVENT_UPLOADDONE_ABORTED)不会收到任何确认信息。

配置定时器

LoRa Basics Modem提供了配置定时器的可能性,可以触发SMTC_MODEM_EVENT_ALARM事件。

要启动计时器,用户必须调用smtc_modem_alarm_start_timer ().打电话就可以阻止smtc_modem_alarm_clear_timer ().呼唤smtc_modem_alarm_get_remaining_time ()返回事件被触发前的剩余时间(以秒为单位)。

交叉直接无线电访问

可以阻止LoRa Basics Modem访问收发器,而让应用程序直接访问它而不被中断。

这可以通过两个功能来实现:

  • smtc_modem_suspend_before_user_radio_access ()-在直接访问收发器之前调用

  • smtc_modem_resume_after_user_radio_access ()-在最后一次直接访问收发器后调用

请注意

只要…smtc_modem_suspend_before_user_radio_access ()时,LoRa Basics Modem将不会执行任何与无线电相关的操作,直到smtc_modem_resume_after_user_radio_access ()被称为。例如,如果启用了B或C类操作,则不能执行。