com.slamtec.slamware.log.customer包

   

ResultCode枚举

表示CustomerLog相关接口调用返回值的枚举类。

Unknown

未知情况

Ok

成功

Failed

失败(不指明失败的具体原因)

ServiceNotFound

服务没有找到

ServiceStopping

服务正在停止

CommandNotFound

命令未找到(例如旧的固件不支持后来新增的命令时,会返回此值)。

   

ServerStatus

表示设备端的 CustomerLog 服务的状态数据。

方法

ServerStatus()

默认构造函数。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为void

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


ServerStatus serverStatus = new ServerStatus();

   

方法

getServiceUuid()

获取服务的UUID字符串。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 String

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


String serviceUuid = serverStatus.getServiceUuid();

   

方法

setServiceUuid(String serviceUuid)

设置服务的UUID字符串。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
serviceUuid String 服务的UUID字符串 -
注意事项

示例代码


serverStatus.setServiceUuid(serviceUuid);

   

方法

getLatestSeqNum()

获取最后一条产生的CustomerLog的序列号。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 long

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


long latestSeqNum = serverStatus.getLatestSeqNum();

   

方法

setLatestSeqNum(long latestSeqNum)

设置最后一条产生的CustomerLog的序列号。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
latestSeqNum long 最后一条产生的CustomerLog的序列号 -
注意事项

示例代码


serverStatus.setLatestSeqNum(123456);

   

方法

getSeqNumRange()

获取Log的序列号的范围。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 SeqNumRange

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

无。

示例代码


SeqNumRange seqNumRange = serverStatus.getSeqNumRange();

   

方法

setSeqNumRange(SeqNumRange seqNumRange)

设置Log的序列号的范围。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
seqNumRange SeqNumRange Log的序列号的范围 -
注意事项

无。

示例代码


serverStatus.setSeqNumRange(seqNumRange);

   

ReadResult

读取CustomerLog的结果数据。

方法

ReadResult()

默认构造函数。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为void

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


ReadResult res = new ReadResult();

   

方法

getServerStatus()

获取服务状态数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 ServerStatus

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


ServerStatus serverStatus = res.getServerStatus();

   

方法

setServerStatus(ServerStatus serverStatus)

设置服务状态数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
serverStatus ServerStatus 服务状态数据 -
注意事项

示例代码


res.setServerStatus(serverStatus);

   

方法

getSeqNumRange()

获取Log的序列号的范围。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 SeqNumRange

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

无。

示例代码


SeqNumRange seqNumRange = res.getSeqNumRange();

   

方法

setSeqNumRange(SeqNumRange seqNumRange)

设置Log的序列号的范围。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
seqNumRange SeqNumRange Log的序列号的范围 -
注意事项

无。

示例代码


res.setSeqNumRange(seqNumRange);

   

方法

getLogs()

获取Log数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 java.util.ArrayList<LogData>

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


java.util.ArrayList<LogData> logs = res.getLogs();

   

方法

setLogs(java.util.ArrayList<LogData> logs)

设置Log数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
logs java.util.ArrayList<LogData> Log数据 -
注意事项

示例代码


res.setLogs(logs);

   

CustomerLogReceiverLastRecvStatus

表示CustomerLogReceiver最后接收状态的数据,可以用于尝试断开连接后从上次的状态开始接收Log数据。

方法

CustomerLogReceiverLastRecvStatus()

默认构造函数。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为void

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


CustomerLogReceiverLastRecvStatus lastRecvStatus = new CustomerLogReceiverLastRecvStatus();

   

方法

getServiceUuid()

获取服务的UUID字符串。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 String

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


String serviceUuid = lastRecvStatus.getServiceUuid();

   

方法

setServiceUuid(String serviceUuid)

设置服务的UUID字符串。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
serviceUuid String 服务的UUID字符串 -
注意事项

示例代码


lastRecvStatus.setServiceUuid(serviceUuid);

   

方法

getLastReceivedSeqNum()

获取最后一条收到的Log的序列号。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 long

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


long lastReceivedSeqNum = lastRecvStatus.getLastReceivedSeqNum();

   

方法

setLastReceivedSeqNum(long lastReceivedSeqNum)

设置最后一条收到的Log的序列号。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
latestSeqNum long 最后一条收到的Log的序列号 -
注意事项

示例代码


lastRecvStatus.setLastReceivedSeqNum(lastReceivedSeqNum);

   

CustomerLogReceiverInitArg

用于初始化CustomerLogReceiver的数据。

方法

CustomerLogReceiverInitArg()

默认构造函数。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为void

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


CustomerLogReceiverInitArg initArg = new CustomerLogReceiverInitArg();

   

方法

getLastRecvStatus()

获取最后一次的接收状态数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 CustomerLogReceiverLastRecvStatus

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


CustomerLogReceiverLastRecvStatus lastRecvStatus = initArg.getLastRecvStatus();

   

方法

setLastRecvStatus(CustomerLogReceiverLastRecvStatus lastRecvStatus)

设置最后一次的接收状态数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
lastRecvStatus CustomerLogReceiverLastRecvStatus 最后一次的接收状态数据 -
注意事项

示例代码


initArg.setLastRecvStatus(lastRecvStatus);

   

ICustomerLogReceiver接口

用于接收 CustomerLog 的接口,可通过 AbstractSlamwarePlatform 对象来创建支持该接口的实例。

方法

isInitialized()

是否已经初始化。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 boolean,true表示已经初始化成功了。

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


boolean isInitialized = customerLogReceiver.isInitialized();

   

方法

getLastRecvStatus()

获取最后一次的接收状态。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 CustomerLogReceiverLastRecvStatus

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

示例代码


CustomerLogReceiverLastRecvStatus lastRecvStatus = customerLogReceiver.getLastRecvStatus();

   

方法

init(CustomerLogReceiverInitArg initArg)

尝试初始化。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 ResultCode

参数说明
参数名称 参数类型 描述 备注
initArg CustomerLogReceiverInitArg 初始化参数数据 -
注意事项

一个对象只能被初始化一次。 默认情况下 initArg 可以传 null,表示使用默认参数,从设备端现存的第一条Log开始接收。 如果要尝试从上次断开的地方开始继续接收Log,可以参考 recvLogs() 接口的示例代码。

示例代码


CustomerLogReceiverInitArg initArg = null; // null means use the default arguments on the robot.
ResultCode resCode = customerLogReceiver.init(initArg);
if (ResultCode.Ok == resCode)
    ; // succeed to initialize
else
    ; // failed

   

方法

queryServerStatus()

获取设备端CustomerLog服务的状态数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 StdPair<ResultCode, ServerStatus>

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

无。

示例代码


StdPair<ResultCode, ServerStatus> tPairStatus = customerLogReceiver.queryServerStatus();
if (ResultCode.Ok == tPairStatus.getFirst())
    ; // succeed to get the server status
else
    ; // failed

   

方法

recvLogs(int maxCntToRead)

接收Log数据。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 StdPair<ResultCode, ReadResult>

参数说明
参数名称 参数类型 描述 备注
maxCntToRead int 最多读取Log的条数 -
注意事项

如果 maxCntToRead 小于等于0,则最多读取设备端设定的默认条数的Log。 其它注意事项可参考示例代码中的注释。

示例代码

{

private void testCustomerLogReceiver_() {
    try {
        // connect to the robot.
        String ip = "10.0.2.2";
        int port = 1445;
        Log.i("MyCorePlatform", "start to connect.");
        com.slamtec.slamware.AbstractSlamwarePlatform corePltfm = com.slamtec.slamware.discovery.DeviceManager.connect(ip, port);
        if (null == corePltfm)
        {
            Log.e("MyCorePlatform", "Failed to connect.");
            return;
        }
        Log.i("MyCorePlatform", "Connected");

        // Create Customer Log Receiver for receiving logs;
        // If the connection is lost, the old log receiver will not work, a new one should be created.
        com.slamtec.slamware.log.customer.ICustomerLogReceiver logReceiver = corePltfm.createCustomerLogReceiver();
        if (null == logReceiver)
        {
            Log.e("MyLogReceiver", "Failed to create.");
            return;
        }
        Log.i("MyLogReceiver", "Created");

        com.slamtec.slamware.log.customer.CustomerLogReceiverInitArg initArg = null;
        // if you want to resume the last receive status, load the saved status data like the following codes:
        /*
        {
            initArg = new com.slamtec.slamware.log.customer.CustomerLogReceiverInitArg();
            initArg.setLastRecvStatus(lastRecvStatus); // lastRecvStatus is the last receive status data you saved before
        }
        */
        com.slamtec.slamware.log.customer.ResultCode resCode = logReceiver.init(initArg);
        if (com.slamtec.slamware.log.customer.ResultCode.Ok != resCode)
        {
            Log.e("MyLogReceiver", "Failed to init, resCode: " + resCode.name());
            return;
        }

        boolean isWorking = true;
        while (isWorking)
        {
            // some other operations of your application

            int maxCntToRead = 0; // set to zero to use the default value of the robot.
            com.slamtec.slamware.utils.StdPair<com.slamtec.slamware.log.customer.ResultCode, com.slamtec.slamware.log.customer.ReadResult> pairRes
                    = logReceiver.recvLogs(maxCntToRead);
            if (com.slamtec.slamware.log.customer.ResultCode.Ok == pairRes.getFirst())
            {
                showMyLogsResult_(pairRes.getSecond());
            }
            else
            {
                Log.e("MyLogs", ("ResultCode: " + pairRes.getFirst().name()));
            }

            // some other operations of your application
            Thread.sleep(100);
        }

        // you may save it for the next time to continue to receive logs if you want.
        /*
        {
            com.slamtec.slamware.log.customer.CustomerLogReceiverLastRecvStatus lastRecvStatus = logReceiver.getLastRecvStatus();
            // now you can save lastRecvStatus somewhere for the next time
        }
        */
    }
    catch (Exception e) {
        Log.e("MyException", e.toString());
    }
}

private void showMyLogsResult_(com.slamtec.slamware.log.customer.ReadResult tRes) {

    java.util.ArrayList<com.slamtec.slamware.log.LogData> logsList = tRes.getLogs();
    int iLogsCnt = (null != logsList ? logsList.size() : 0);
    Log.i("MyLogs", ("LogsCnt: " + iLogsCnt));
    if (iLogsCnt < 1)
        return;

    for (int i = 0; i < iLogsCnt; ++i)
    {
        Log.i("MyLogs", ("logs[" + i + "]"));
        com.slamtec.slamware.log.LogData logDat = logsList.get(i);
        if (null == logDat)
        {
            // it should not be null here, there may be some problems.
            Log.e("MyLogs", "null log data.");
            continue;
        }

        boolean bIsJsonLog = logDat.getIsJsonLog();
        if (bIsJsonLog)
        {
            // if it is json Log, you can parse the string of log to a JSON object.
            // ALL customer logs are json log.
        }

        String strMsg = ("LogSource: " + logDat.getLogSource() + "\n");
        strMsg += ("LogLevel: " + logDat.getLogLevel().name() + "\n");
        strMsg += ("IsJsonLog: " + bIsJsonLog + "\n");
        strMsg += ("StringOfLog: " + logDat.getStringOfLog() + "\n");
        Log.i("MyLogs", strMsg);
    }
}

}

   

方法

setNextReadStartSeqNum(long startSeqNum)

设置下一次开始接收的序列号。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
startSeqNum long 下一次开始接收的序列号 -
注意事项

无。

示例代码


customerLogReceiver.setNextReadStartSeqNum(123);

   

方法

resetNextReadStartSeqNum()

取消设置下一次开始接收的序列号。

Stability: 3 - Stable

Added in v2.5.0

返回值

返回类型为 void

参数说明
参数名称 参数类型 描述 备注
- - -
注意事项

无。

示例代码


customerLogReceiver.resetNextReadStartSeqNum();