以下部分定义了一组呼叫以管理组呼服务的启动/停止顺序。
图 7-9 显示了对应用程序可见的组呼服务状态。 根据 MSDC 或用户/应用程序采取的操作,服务可能会从一种状态移动到另一种状态。
注意:图 7-9 中没有显示两个临时中间状态:
void startGroupCallService(long tmgi, List saiList, List freqList, String multicastIP, int multicastPort);
void groupCallServiceStarted(long tmgi, String server, int port);
void startGroupCallService (long TMGI, List SAIList, List FrequencyList); -- Deprecated from version 4.3.03.01.0
void groupCallServiceStarted (long TMGI); -- Deprecated from version 4.3.03.01.0
void groupCallServiceError (long TMGI, int errorCode,String message);
组呼模块连接初始化
要启动组呼服务,应用程序应使用 startGroupCallService()。 通过这个调用,应用程序给出了要启动的服务的 TMGI、SAI 列表和频率列表。
SIB15 是一个系统信息块,提供当前小区及其邻居的 SAI 列表。 在广播 SIB15 的小区中,UE 使用 SAI 列表来确定广播 TMGI 的频率,而忽略频率列表。 如果当前小区没有广播SIB15,调制解调器使用频率列表来激活TMGI。 SAI列表和频率列表可能为空,表示UE应该尝试激活当前小区的TMGI。
如果成功启动组呼服务,MSDC API 会以 groupCallServiceStarted() 响应,以指示服务已进入 STARTED 状态。
如果app要启动Group Call服务,必须通过startGroupCallService()发送请求。该函数需要需要启动Group Call服务的TMGI、SAI列表和Frequency列表。 应用程序必须从组呼客户端获取此信息,该客户端从网络中的组呼服务器获取信息。
服务成功启动后,MSDC API 将 groupCallServiceStarted() 发送到应用程序并将服务移动到 STARTED 状态。
如果 MSDC 因任何原因无法启动组呼服务,MSDC API 将使用 groupCallServiceError() 和错误代码 ERROR_GC_UNABLE_TO_START_SERVICE 响应应用程序。
void stopGroupCallService (long TMGI);
void groupCallServiceStopped (long TMGI);
void groupCallServiceError (long TMGI, int errorCode, String message);
组呼模块连接初始化
要停止处于 STARTED 或 STALLED 状态的组呼服务,应用程序应使用 stopGroupCallService()。 通过调用该函数,应用程序指示要停止的服务的TMGI。
如果成功停止组呼服务,则 MSDC API 会使用 groupCallServiceStopped() 进行响应,以指示服务已移至 STOPPED 状态。
要停止处于 STARTED 或 STALLED 状态的服务,应用程序使用 stopGroupCallService()。 如果停止服务成功,MSDC API 将 groupCallServiceStopped() 发送到应用程序。
如果 MSDC 由于某种原因无法停止组呼服务,MSDC API 会使用 groupCallServiceError() 和错误代码 ERROR_GC_UNABLE_TO_STOP_SERVICE 响应应用程序。