This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-CC26X2R1: 为什么RTLS UI中不显示PASSIVE的内容,只显示master中的内容

Part Number: LAUNCHXL-CC26X2R1

  • 您好,感谢您的回答!

    我用了两块BOOSTXL-AoA,并且按照您给出的网址修改了程序,这是RTLS UI的显示:

    但是我在进行auto  paly的时候,他一直在初始化,并且rtls_ui.exe显示:

    - WebSocket Proxy Client Raise Error : [WinError 10061] 由于目标计算机积极拒绝,无法连接。
    - WebSocket Proxy Client Disconnected

    请问您知道怎么解决吗?

  • 将防火墙,杀毒软件等都关闭试试

    另外将log信息传上来看看

  • 您好,感谢您的回答!

    关了防火墙和杀毒软件之后显示出来了,但是它仍然是显示不出passive的内容:

    相对应的rtls_ui.exe的内容是:

    相对应的log文件是:

    05_21_2021_11_07_07_log.txt
    [2021-05-21 11:07:41,179]      root -     INFO - Setting nodes : 
    [2021-05-21 11:07:41,181]   asyncio -    DEBUG - Using selector: SelectSelector
    [2021-05-21 11:07:41,184]      root -     INFO - Message receiver started
    [2021-05-21 11:07:41,185]      root -     INFO - RTLS Manager started
    [2021-05-21 11:07:41,197]   asyncio -    DEBUG - Get address info localhost:5049, type=<SocketKind.SOCK_STREAM: 1>, flags=<AddressInfo.AI_PASSIVE: 1>
    [2021-05-21 11:07:41,206]   asyncio -    DEBUG - Getting address info localhost:5049, type=<SocketKind.SOCK_STREAM: 1>, flags=<AddressInfo.AI_PASSIVE: 1> took 15.000ms: [(<AddressFamily.AF_INET6: 23>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('::1', 5049, 0, 0)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('127.0.0.1', 5049))]
    [2021-05-21 11:07:41,209]   asyncio -    DEBUG - poll took 15.000 ms: 1 events
    [2021-05-21 11:07:41,211]   asyncio -     INFO - <Server sockets=[<socket.socket fd=1500, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 5049)>, <socket.socket fd=1548, family=AddressFamily.AF_INET6, type=SocketKind.SOCK_STREAM, proto=0, laddr=('::1', 5049, 0, 0)>]> is serving
    [2021-05-21 11:07:41,246] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_IDENTIFY, data=)
    [2021-05-21 11:07:41,247] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_IDENTIFY, data=)
    [2021-05-21 11:07:41,247] serialnode -    DEBUG - >>> FE:00:00:39:00:39
    [2021-05-21 11:07:41,248] serialnode -    DEBUG - >>> FE:00:00:39:00:39
    [2021-05-21 11:07:41,309] serialnode -    DEBUG - <<< FE:0C:00:79:00:04:01:02:00:05:2C:77:2D:5E:8A:F8:08:25
    [2021-05-21 11:07:41,309] serialnode -    DEBUG - <<< FE:0C:00:79:00:94:00:02:00:05:FC:98:2D:5E:8A:F8:08:8B
    [2021-05-21 11:07:41,311] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:41,311] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:41,312] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=04:01:02:00:05:2C:77:2D:5E:8A:F8:08)
    [2021-05-21 11:07:41,312] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=94:00:02:00:05:FC:98:2D:5E:8A:F8:08)
    [2021-05-21 11:07:41,312] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:41,314] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:41,531]   asyncio -    DEBUG - poll took 313.000 ms: 1 events
    [2021-05-21 11:07:41,532]   asyncio -    DEBUG - <Server sockets=[<socket.socket fd=1500, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 5049)>, <socket.socket fd=1548, family=AddressFamily.AF_INET6, type=SocketKind.SOCK_STREAM, proto=0, laddr=('::1', 5049, 0, 0)>]> got a new connection from ('127.0.0.1', 64050): <socket.socket fd=1568, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 5049), raddr=('127.0.0.1', 64050)>
    [2021-05-21 11:07:41,535] websockets.protocol -    DEBUG - server - state = CONNECTING
    [2021-05-21 11:07:41,540] websockets.protocol -    DEBUG - server - event = connection_made(<_SelectorSocketTransport fd=1568 read=idle write=<idle, bufsize=0>>)
    [2021-05-21 11:07:41,547] websockets.protocol -    DEBUG - server - state = OPEN
    [2021-05-21 11:07:43,193]      root -     INFO - Done setting node
    [2021-05-21 11:07:43,194]  rtlsnode -     INFO - PASSIVE : F8:8A:5E:2D:77:2C <-- {'type': 'Command', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': None}
    [2021-05-21 11:07:43,194]  rtlsnode -     INFO - MASTER  : F8:8A:5E:2D:98:FC <-- {'type': 'Command', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': None}
    [2021-05-21 11:07:43,209] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 11:07:43,210] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 11:07:43,210] serialnode -    DEBUG - >>> FE:00:00:39:20:19
    [2021-05-21 11:07:43,211] serialnode -    DEBUG - >>> FE:00:00:39:20:19
    [2021-05-21 11:07:43,272] serialnode -    DEBUG - <<< 00:FE:00:00:59:20:79
    [2021-05-21 11:07:43,272] serialnode -    DEBUG - <<< 00:FE:00:00:59:20:79
    [2021-05-21 11:07:43,273]      root -  WARNING - ConstError('parsing expected 254 but parsed 0')
    [2021-05-21 11:07:43,273]      root -  WARNING - ConstError('parsing expected 254 but parsed 0')
    [2021-05-21 11:07:43,274] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,275] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,275] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 11:07:43,275] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 11:07:43,275] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,277]  rtlsnode -    DEBUG - Have 0 subscribers for UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 11:07:43,277] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,279]  rtlsnode -    DEBUG - Have 0 subscribers for UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 11:07:43,280]      root -     INFO - MASTER  : F8:8A:5E:2D:98:FC --> {'type': 'Event', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': {'raw_payload': ''}}
    [2021-05-21 11:07:43,280]   asyncio -     INFO - poll 20000.000 ms took 1703.000 ms: 1 events
    [2021-05-21 11:07:43,282]      root -     INFO - PASSIVE : F8:8A:5E:2D:77:2C --> {'type': 'Event', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': {'raw_payload': ''}}
    [2021-05-21 11:07:43,285] websockets.protocol -    DEBUG - server > Frame(fin=True, opcode=1, data=b'{"identifier": "F8:8A:5E:2D:98:FC", "message": {"originator": "Nwp", "type": "AsyncReq", "subsystem": "RTLS", "command": "RTLS_CMD_RESET_DEVICE", "payload": {"raw_payload": ""}}}', rsv1=False, rsv2=False, rsv3=False)
    [2021-05-21 11:07:43,286] websockets.protocol -    DEBUG - server > Frame(fin=True, opcode=1, data=b'{"identifier": "F8:8A:5E:2D:77:2C", "message": {"originator": "Nwp", "type": "AsyncReq", "subsystem": "RTLS", "command": "RTLS_CMD_RESET_DEVICE", "payload": {"raw_payload": ""}}}', rsv1=False, rsv2=False, rsv3=False)
    [2021-05-21 11:07:43,306]  werkzeug -     INFO - 127.0.0.1 - - [21/May/2021 11:07:43] "POST /rtls-ui/api/initialize HTTP/1.1" 200 -
    [2021-05-21 11:07:43,418]  rtlsnode -     INFO - PASSIVE : F8:8A:5E:2D:77:2C <-- {'type': 'Command', 'command': 'RTLS_CMD_IDENTIFY', 'payload': None}
    [2021-05-21 11:07:43,419]  rtlsnode -     INFO - MASTER  : F8:8A:5E:2D:98:FC <-- {'type': 'Command', 'command': 'RTLS_CMD_IDENTIFY', 'payload': None}
    [2021-05-21 11:07:43,463] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_IDENTIFY, data=)
    [2021-05-21 11:07:43,464] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_IDENTIFY, data=)
    [2021-05-21 11:07:43,465] serialnode -    DEBUG - >>> FE:00:00:39:00:39
    [2021-05-21 11:07:43,465] serialnode -    DEBUG - >>> FE:00:00:39:00:39
    [2021-05-21 11:07:43,526] serialnode -    DEBUG - <<< FE:0C:00:79:00:04:01:02:00:05:2C:77:2D:5E:8A:F8:08:25
    [2021-05-21 11:07:43,526] serialnode -    DEBUG - <<< FE:0C:00:79:00:94:00:02:00:05:FC:98:2D:5E:8A:F8:08:8B
    [2021-05-21 11:07:43,527] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,528] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,528] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=04:01:02:00:05:2C:77:2D:5E:8A:F8:08)
    [2021-05-21 11:07:43,529] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=94:00:02:00:05:FC:98:2D:5E:8A:F8:08)
    [2021-05-21 11:07:43,529] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,530]  rtlsnode -    DEBUG - Have 0 subscribers for UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=04:01:02:00:05:2C:77:2D:5E:8A:F8:08)
    [2021-05-21 11:07:43,530] serialnode -    DEBUG - <<< 
    [2021-05-21 11:07:43,531]  rtlsnode -    DEBUG - Have 0 subscribers for UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=94:00:02:00:05:FC:98:2D:5E:8A:F8:08)
    [2021-05-21 11:07:43,533]      root -     INFO - PASSIVE : F8:8A:5E:2D:77:2C --> {'type': 'Response', 'command': 'RTLS_CMD_IDENTIFY', 'payload': {'capabilities': {'CM': False, 'AOA_TX': False, 'AOA_RX': True, 'RESERVED1': False, 'RTLS_CAP_CL_AOA': False, 'RESERVED2': False, 'RTLS_SLAVE': False, 'RTLS_MASTER': False, 'RTLS_PASSIVE': True}, 'revNum': 2, 'devId': 'DeviceFamily_ID_CC26X2', 'identifier': 'F8:8A:5E:2D:77:2C'}}
    [2021-05-21 11:07:43,533]   asyncio -    DEBUG - poll 18282.000 ms took 250.000 ms: 1 events
    [2021-05-21 11:07:43,534]      root -     INFO - MASTER  : F8:8A:5E:2D:98:FC --> {'type': 'Response', 'command': 'RTLS_CMD_IDENTIFY', 'payload': {'capabilities': {'CM': False, 'AOA_TX': False, 'AOA_RX': True, 'RESERVED1': False, 'RTLS_CAP_CL_AOA': True, 'RESERVED2': False, 'RTLS_SLAVE': False, 'RTLS_MASTER': True, 'RTLS_PASSIVE': False}, 'revNum': 2, 'devId': 'DeviceFamily_ID_CC26X2', 'identifier': 'F8:8A:5E:2D:98:FC'}}
    [2021-05-21 11:07:43,539] websockets.protocol -    DEBUG - server > Frame(fin=True, opcode=1, data=b'{"identifier": "F8:8A:5E:2D:77:2C", "message": {"originator": "Nwp", "type": "SyncRsp", "subsystem": "RTLS", "command": "RTLS_CMD_IDENTIFY", "payload": {"capabilities": {"CM": false, "AOA_TX": false, "AOA_RX": true, "RESERVED1": false, "RTLS_CAP_CL_AOA": false, "RESERVED2": false, "RTLS_SLAVE": false, "RTLS_MASTER": false, "RTLS_PASSIVE": true}, "revNum": 2, "devId": "DeviceFamily_ID_CC26X2", "identifier": "F8:8A:5E:2D:77:2C"}}}', rsv1=False, rsv2=False, rsv3=False)
    [2021-05-21 11:07:43,540] websockets.protocol -    DEBUG - server > Frame(fin=True, opcode=1, data=b'{"identifier": "F8:8A:5E:2D:98:FC", "message": {"originator": "Nwp", "type": "SyncRsp", "subsystem": "RTLS", "command": "RTLS_CMD_IDENTIFY", "payload": {"capabilities": {"CM": false, "AOA_TX": false, "AOA_RX": true, "RESERVED1": false, "RTLS_CAP_CL_AOA": true, "RESERVED2": false, "RTLS_SLAVE": false, "RTLS_MASTER": true, "RTLS_PASSIVE": false}, "revNum": 2, "devId": "DeviceFamily_ID_CC26X2", "identifier": "F8:8A:5E:2D:98:FC"}}}', rsv1=False, rsv2=False, rsv3=False)
    [2021-05-21 11:07:43,639]  werkzeug -     INFO - 127.0.0.1 - - [21/May/2021 11:07:43] "GET /rtls-ui/api/initialize HTTP/1.1" 200 -
    [2021-05-21 11:08:01,575]   asyncio -     INFO - poll 18032.000 ms took 18032.000 ms: timeout
    [2021-05-21 11:08:01,579] websockets.protocol -    DEBUG - server > Frame(fin=True, opcode=9, data=b'\xc8\x13\x11.', rsv1=False, rsv2=False, rsv3=False)
    [2021-05-21 11:08:01,584]   asyncio -    DEBUG - poll 20000.000 ms took 0.000 ms: 1 events
    [2021-05-21 11:08:01,585] websockets.protocol -    DEBUG - server < Frame(fin=True, opcode=10, data=b'\xc8\x13\x11.', rsv1=False, rsv2=False, rsv3=False)
    [2021-05-21 11:08:01,586] websockets.protocol -    DEBUG - server - received solicited pong: c813112e
    [2021-05-21 11:08:18,018]   asyncio -     INFO - poll 20000.000 ms took 16438.000 ms: 1 events
    [2021-05-21 11:08:18,019]   asyncio -    DEBUG - <_SelectorSocketTransport fd=1568 read=polling write=<idle, bufsize=0>>: Fatal read error on socket transport
    Traceback (most recent call last):
      File "asyncio\selector_events.py", line 814, in _read_ready__data_received
    ConnectionResetError: [WinError 10054] Զ������ǿ�ȹر���һ�����е����ӡ�
    [2021-05-21 11:08:18,021] websockets.protocol -    DEBUG - server - event = connection_lost([WinError 10054] Զ������ǿ�ȹر���һ�����е����ӡ�)
    [2021-05-21 11:08:18,021] websockets.protocol -    DEBUG - server - state = CLOSED
    [2021-05-21 11:08:18,022] websockets.protocol -    DEBUG - server x code = 1006, reason = [no reason]
    [2021-05-21 11:08:18,023]      root -     INFO - AOA Stopped
    [2021-05-21 11:08:18,024] websockets.protocol -    DEBUG - server ! failing WebSocket connection in the CLOSED state: 1006 [no reason]
    [2021-05-21 11:08:18,028] websockets.protocol -    DEBUG - server x half-closing TCP connection
    [2021-05-21 11:08:18,804]   asyncio -    DEBUG - poll took 766.000 ms: 1 events
    [2021-05-21 11:08:18,816]   asyncio -    DEBUG - Close <_WindowsSelectorEventLoop running=False closed=False debug=True>
    

    05_21_2021_11_08_18_log.txt

    请问您知道如何解决吗?

  • 似乎是passive连接有问题,没有收到数据,检查paasive上的BOOSTXL-AoA是否连接正确

  • 您好,感谢您的回答,我检查了一下连接,并且我让两个BOOSTXL-AoA都各自当了一次master和passive,结果如下:

    1

    .  

    2. 

    两次结果都是只显示master,不显示passive,这是不是意味着这板子的连接是正确的?如果是正确的,那为什么不显示passive的信息?

    并且在我关闭防火墙和杀毒软件之后,她还是会时不时出来:

    - WebSocket Proxy Client Raise Error : [WinError 10061] 由于目标计算机积极拒绝,无法连接。
    - WebSocket Proxy Client Disconnected

    以下是日志文件:

    05_21_2021_16_24_37_log.txt
    [2021-05-21 16:24:51,201]      root -     INFO - Setting nodes : 
    [2021-05-21 16:24:51,204]   asyncio -    DEBUG - Using selector: SelectSelector
    [2021-05-21 16:24:51,206]      root -     INFO - Message receiver started
    [2021-05-21 16:24:51,207]      root -     INFO - RTLS Manager started
    [2021-05-21 16:24:51,217]   asyncio -    DEBUG - Get address info localhost:5049, type=<SocketKind.SOCK_STREAM: 1>, flags=<AddressInfo.AI_PASSIVE: 1>
    [2021-05-21 16:24:51,224]   asyncio -    DEBUG - Getting address info localhost:5049, type=<SocketKind.SOCK_STREAM: 1>, flags=<AddressInfo.AI_PASSIVE: 1> took 16.000ms: [(<AddressFamily.AF_INET6: 23>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('::1', 5049, 0, 0)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 0, '', ('127.0.0.1', 5049))]
    [2021-05-21 16:24:51,226]   asyncio -    DEBUG - poll took 16.000 ms: 1 events
    [2021-05-21 16:24:51,228]   asyncio -     INFO - <Server sockets=[<socket.socket fd=1600, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 5049)>, <socket.socket fd=1612, family=AddressFamily.AF_INET6, type=SocketKind.SOCK_STREAM, proto=0, laddr=('::1', 5049, 0, 0)>]> is serving
    [2021-05-21 16:24:51,270] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_IDENTIFY, data=)
    [2021-05-21 16:24:51,271] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_IDENTIFY, data=)
    [2021-05-21 16:24:51,272] serialnode -    DEBUG - >>> FE:00:00:39:00:39
    [2021-05-21 16:24:51,272] serialnode -    DEBUG - >>> FE:00:00:39:00:39
    [2021-05-21 16:24:51,334] serialnode -    DEBUG - <<< FE:0C:00:79:00:04:01:02:00:05:2C:77:2D:5E:8A:F8:08:25
    [2021-05-21 16:24:51,334] serialnode -    DEBUG - <<< FE:0C:00:79:00:94:00:02:00:05:FC:98:2D:5E:8A:F8:08:8B
    [2021-05-21 16:24:51,337] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:51,339] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:51,340] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=04:01:02:00:05:2C:77:2D:5E:8A:F8:08)
    [2021-05-21 16:24:51,340] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=SyncRsp, subsystem=RTLS, command=RTLS_CMD_IDENTIFY, data=94:00:02:00:05:FC:98:2D:5E:8A:F8:08)
    [2021-05-21 16:24:51,341] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:51,341] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:53,220]      root -     INFO - Done setting node
    [2021-05-21 16:24:53,222]  rtlsnode -     INFO - PASSIVE : F8:8A:5E:2D:77:2C <-- {'type': 'Command', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': None}
    [2021-05-21 16:24:53,223]  rtlsnode -     INFO - MASTER  : F8:8A:5E:2D:98:FC <-- {'type': 'Command', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': None}
    [2021-05-21 16:24:53,237] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 16:24:53,239] serialnode -    DEBUG - >>> UNPIMessage(originator=Ap type=SyncReq, subsystem=25, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 16:24:53,240] serialnode -    DEBUG - >>> FE:00:00:39:20:19
    [2021-05-21 16:24:53,241] serialnode -    DEBUG - >>> FE:00:00:39:20:19
    [2021-05-21 16:24:53,300] serialnode -    DEBUG - <<< 00:FE:00:00:59:20:79
    [2021-05-21 16:24:53,301] serialnode -    DEBUG - <<< 00:FE:00:00:59:20:79
    [2021-05-21 16:24:53,302]      root -  WARNING - ConstError('parsing expected 254 but parsed 0')
    [2021-05-21 16:24:53,302]      root -  WARNING - ConstError('parsing expected 254 but parsed 0')
    [2021-05-21 16:24:53,303] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:53,304] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:53,306] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 16:24:53,306] serialnode -    DEBUG - <<< UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 16:24:53,307] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:53,307] serialnode -    DEBUG - <<< 
    [2021-05-21 16:24:53,309]  rtlsnode -    DEBUG - Have 0 subscribers for UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 16:24:53,312]  rtlsnode -    DEBUG - Have 0 subscribers for UNPIMessage(originator=Nwp type=AsyncReq, subsystem=RTLS, command=RTLS_CMD_RESET_DEVICE, data=)
    [2021-05-21 16:24:53,314]      root -     INFO - PASSIVE : F8:8A:5E:2D:77:2C --> {'type': 'Event', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': {'raw_payload': ''}}
    [2021-05-21 16:24:53,317]      root -     INFO - MASTER  : F8:8A:5E:2D:98:FC --> {'type': 'Event', 'command': 'RTLS_CMD_RESET_DEVICE', 'payload': {'raw_payload': ''}}
    

    请问您知道这是怎么回事吗?

  • 我测试是可以的,你再按照TASK1检查下设置是否正确

  • 您好!非常感谢您的回答,我重新检查了一遍我的设置,应该是正确的,并且我刚才在rtls_ui中,点击了

    两个电脑连接这个图标两次,他就出来了

    但是这个黄色的CCI不动,并且 下面两个图中还是没有passive相关的图形,并且我在重复点击两个电脑的图标的时候,偶尔会显示passive的AOA,但是就显示几次啊,那个波形就不动了,请问您知道这是怎么回事吗?急需您的回答,谢谢!!!

  • 您好,感谢您的回答!

    我已经做过这样的实验,实验一:板子1做master,板子2做passive;实验二:板子1做passive,板子2做master,实验结果均是只显示master的信息,这个不足以证明这两个板子的连接 是正确的吗?

  • 您好!我按照您给的网址重现连接了一下板子,并且进行 了测试,测试过程为,三角板为 master,CC26X2R1为slave,两个三角板均显示出了结果。刚刚我又重现连接了两个BOOSTXL-AoA进行了测试,passive的信息确实都出来了,可是差不多持续了两分钟,就不动了,然后旁边的日志信息显示出:

    并且我多重复了几次,均是上面的过程,passive的信息先显示几分钟,然后就停止,日志信息就如图所示,您知道是什么原因吗?急需您的答复,谢谢!!!

  • 我测试了10分钟一直可以正常显示

    你将passive和master程序交叉分别下载到master和passive板子中还是只有passive信息不能显示?

    将master passive slave工程的main.c文件传上来,另外将板子连接图传上来

  • 您好!感谢您的回答。

    首先回答您的问题:使得程序交叉下载,都是一样的结果。

    下面是板子的连接图:

    下面是main.c文件,由于.c文件我没有上传成功,我将他们转成.txt文件进行了上传:

    master_main .txt
    /******************************************************************************
    
     @file  main.c
    
     @brief main entry of the BLE stack sample application.
    
     Group: WCS, BTS
     Target Device: cc13x2_26x2
    
     ******************************************************************************
     
     Copyright (c) 2013-2021, Texas Instruments Incorporated
     All rights reserved.
    
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions
     are met:
    
     *  Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.
    
     *  Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution.
    
     *  Neither the name of Texas Instruments Incorporated nor the names of
        its contributors may be used to endorse or promote products derived
        from this software without specific prior written permission.
    
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
     ******************************************************************************
     
     
     *****************************************************************************/
    
    /*******************************************************************************
     * INCLUDES
     */
    
    #include <xdc/runtime/Error.h>
    
    #include <ti/drivers/Power.h>
    #include <ti/drivers/power/PowerCC26XX.h>
    #include <ti/sysbios/BIOS.h>
    #include <ti/sysbios/knl/Clock.h>
    
    #include <ti/sysbios/knl/Task.h>
    #include "npi_data.h"
    
    #include <icall.h>
    #include "hal_assert.h"
    #include <inc/hw_memmap.h>
    #include <driverlib/vims.h>
    #include "rtls_ctrl_api.h"
    #include "rtls_master.h"
    
    /* Header files required to enable instruction fetch cache */
    #include <inc/hw_memmap.h>
    #include <driverlib/vims.h>
    
    #ifndef USE_DEFAULT_USER_CFG
    
    #include "ble_user_config.h"
    
    // BLE user defined configuration
    icall_userCfg_t user0Cfg = BLE_USER_CFG;
    
    #endif // USE_DEFAULT_USER_CFG
    
    #include <ti/display/Display.h>
    
    /*******************************************************************************
     * MACROS
     */
    
    /*******************************************************************************
     * CONSTANTS
     */
    
    /*******************************************************************************
     * TYPEDEFS
     */
    
    /*******************************************************************************
     * LOCAL VARIABLES
     */
    
    /*******************************************************************************
     * GLOBAL VARIABLES
     */
    
    /*******************************************************************************
     * EXTERNS
     */
    
    extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
    
    Display_Handle dispHandle;
    
    /*******************************************************************************
     * @fn          Main
     *
     * @brief       Application Main
     *
     * input parameters
     *
     * @param       None.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    int main()
    {
      /* Register Application callback to trap asserts raised in the Stack */
      RegisterAssertCback(AssertHandler);
    
      Board_initGeneral();
    
      // Enable iCache prefetching
      VIMSConfigure(VIMS_BASE, TRUE, TRUE);
    
      // Enable cache
      VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
    
    #if !defined( POWER_SAVING )
      /* Set constraints for Standby, powerdown and idle mode */
      // PowerCC26XX_SB_DISALLOW may be redundant
      Power_setConstraint(PowerCC26XX_SB_DISALLOW);
      Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
    #endif // POWER_SAVING
    
      user0Cfg.appServiceInfo->timerTickPeriod = Clock_tickPeriod;
      user0Cfg.appServiceInfo->timerMaxMillisecond  = ICall_getMaxMSecs();
    
      /* Initialize ICall module */
      ICall_init();
    
      /* Start tasks of external images - Priority 5 */
      ICall_createRemoteTasks();
    
      /* Kick off application - Priority 1 */
      RTLSMaster_createTask();
    
      /* Kick off RTLS Control module - Priority 2 */
      rtlsConfiguration_t rtlsConfig;
      
      rtlsConfig.rtlsCapab = (rtlsCapabilities_e)(RTLS_CAP_RTLS_MASTER | RTLS_CAP_AOA_RX);
    
    #ifdef USE_PERIODIC_SCAN
      rtlsConfig.rtlsCapab |= RTLS_CAP_CL_AOA;
    #endif
    
      // Device ID and revision
      rtlsConfig.devId = DeviceFamily_ID;
      rtlsConfig.revNum = RTLS_CTRL_REV;
    
      rtlsConfig.maxNumConns = MAX_NUM_BLE_CONNS;
    
      memcpy(rtlsConfig.identifier, CHIP_ID_ADDR, CHIP_ID_SIZE);
    
      rtlsConfig.rtlsAppCb = RTLSMaster_rtlsCtrlMsgCb;
    
      RTLSCtrl_open(&rtlsConfig);
    
      /* enable interrupts and start SYS/BIOS */
      BIOS_start();
    
      return 0;
    }
    
    
    /*******************************************************************************
     * @fn          AssertHandler
     *
     * @brief       This is the Application's callback handler for asserts raised
     *              in the stack.  When EXT_HAL_ASSERT is defined in the Stack
     *              project this function will be called when an assert is raised,
     *              and can be used to observe or trap a violation from expected
     *              behavior.
     *
     *              As an example, for Heap allocation failures the Stack will raise
     *              HAL_ASSERT_CAUSE_OUT_OF_MEMORY as the assertCause and
     *              HAL_ASSERT_SUBCAUSE_NONE as the assertSubcause.  An application
     *              developer could trap any malloc failure on the stack by calling
     *              HAL_ASSERT_SPINLOCK under the matching case.
     *
     *              An application developer is encouraged to extend this function
     *              for use by their own application.  To do this, add hal_assert.c
     *              to your project workspace, the path to hal_assert.h (this can
     *              be found on the stack side). Asserts are raised by including
     *              hal_assert.h and using macro HAL_ASSERT(cause) to raise an
     *              assert with argument assertCause.  the assertSubcause may be
     *              optionally set by macro HAL_ASSERT_SET_SUBCAUSE(subCause) prior
     *              to asserting the cause it describes. More information is
     *              available in hal_assert.h.
     *
     * input parameters
     *
     * @param       assertCause    - Assert cause as defined in hal_assert.h.
     * @param       assertSubcause - Optional assert subcause (see hal_assert.h).
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    void AssertHandler(uint8 assertCause, uint8 assertSubcause)
    {
      // Sleep 20 msec, allow NPI task to send pending events
      Task_sleep(20000/10);
      //Set current task to lowest priority
      Task_setPri(Task_self(), 1);
      // Free NPI task to send final NPI assert message
      NPIData_postAssertNpiMsgEvent(assertCause);
    
      // Open the display if the app has not already done so
      if ( !dispHandle )
      {
        dispHandle = Display_open(Display_Type_ANY, NULL);
      }
    
      Display_print0(dispHandle, 0, 0, ">>>STACK ASSERT");
    
      // check the assert cause
      switch (assertCause)
      {
        case HAL_ASSERT_CAUSE_OUT_OF_MEMORY:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> OUT OF MEMORY!");
          break;
    
        case HAL_ASSERT_CAUSE_INTERNAL_ERROR:
          // check the subcause
          if (assertSubcause == HAL_ASSERT_SUBCAUSE_FW_INERNAL_ERROR)
          {
            Display_print0(dispHandle, 0, 0, "***ERROR***");
            Display_print0(dispHandle, 2, 0, ">> INTERNAL FW ERROR!");
          }
          else
          {
            Display_print0(dispHandle, 0, 0, "***ERROR***");
            Display_print0(dispHandle, 2, 0, ">> INTERNAL ERROR!");
          }
          break;
    
        case HAL_ASSERT_CAUSE_ICALL_ABORT:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> ICALL ABORT!");
          HAL_ASSERT_SPINLOCK;
          break;
    
        default:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> DEFAULT SPINLOCK!");
          HAL_ASSERT_SPINLOCK;
      }
    
      return;
    }
    
    
    /*******************************************************************************
     * @fn          smallErrorHook
     *
     * @brief       Error handler to be hooked into TI-RTOS.
     *
     * input parameters
     *
     * @param       eb - Pointer to Error Block.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    void smallErrorHook(Error_Block *eb)
    {
      for (;;);
    }
    
    
    /*******************************************************************************
     */
    

    passive_main.txt
    /******************************************************************************
    
     @file  main.c
    
     @brief main entry of the Micro BLE test application.
    
     Group: WCS, BTS
     Target Device: cc13x2_26x2
    
     ******************************************************************************
     
     Copyright (c) 2013-2021, Texas Instruments Incorporated
     All rights reserved.
    
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions
     are met:
    
     *  Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.
    
     *  Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution.
    
     *  Neither the name of Texas Instruments Incorporated nor the names of
        its contributors may be used to endorse or promote products derived
        from this software without specific prior written permission.
    
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
     ******************************************************************************
     
     
     *****************************************************************************/
    
    /******************************************************************************
    *
     * INCLUDES
     */
    
    #include <xdc/runtime/Error.h>
    #include <ti/drivers/Power.h>
    #include <ti/drivers/power/PowerCC26XX.h>
    #include <ti/sysbios/BIOS.h>
    #include <ti/display/Display.h>
    
    #include <ti/sysbios/knl/Task.h>
    #include "npi_data.h"
    
    #include <hal_assert.h>
    #include <bcomdef.h>
    #include <string.h>
    
    /* Header files required to enable instruction fetch cache */
    #include <inc/hw_memmap.h>
    #include <driverlib/vims.h>
    #include "rtls_ctrl_api.h"
    #include "micro_ble_cm.h"
    
    #include "rtls_passive.h"
    #include "osal_snv.h"
    
    /*******************************************************************************
     * MACROS
     */
    
    /*******************************************************************************
     * CONSTANTS
     */
    
    /*******************************************************************************
     * TYPEDEFS
     */
    
    /*******************************************************************************
     * LOCAL VARIABLES
     */
    
    /*******************************************************************************
     * GLOBAL VARIABLES
     */
    
    /*******************************************************************************
     * EXTERNS
     */
    extern assertCback_t halAssertCback;
    
    extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
    
    extern Display_Handle dispHandle;
    
    /*******************************************************************************
     * @fn          Main
     *
     * @brief       Application Main
     *
     * input parameters
     *
     * @param       None.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    int main()
    {
      /* Register Application callback to trap asserts raised in the Stack */
      halAssertCback = AssertHandler;
    
      PIN_init(BoardGpioInitTable);
    
      /* Enable iCache prefetching */
      VIMSConfigure(VIMS_BASE, TRUE, TRUE);
    
      /* Enable cache */
      VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
    
    #ifndef POWER_SAVING
      /* Set constraints for Standby, powerdown and idle mode */
      /* PowerCC26XX_SB_DISALLOW may be redundant */
      Power_setConstraint(PowerCC26XX_SB_DISALLOW);
      Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
    #endif /* POWER_SAVING */
    
      // Initialize NV System
      osal_snv_init();
    
      /* Create Application task. */
      RTLSPassive_init();
      RTLSPassive_stack_init();
    
      /* Kick off RTLS Control module - Priority 2 */
      rtlsConfiguration_t rtlsConfig;
    
      rtlsConfig.rtlsCapab = (rtlsCapabilities_e)(RTLS_CAP_RTLS_PASSIVE | RTLS_CAP_AOA_RX);
    
      // Device ID and revision
      rtlsConfig.devId = DeviceFamily_ID;
      rtlsConfig.revNum = RTLS_CTRL_REV;
    
      rtlsConfig.maxNumConns = CM_MAX_SESSIONS;
    
      memcpy(rtlsConfig.identifier, CHIP_ID_ADDR, CHIP_ID_SIZE);
    
      rtlsConfig.rtlsAppCb = RTLSPassive_rtlsCtrlMsgCb;
    
      RTLSCtrl_open(&rtlsConfig);
    
      BIOS_start();     /* enable interrupts and start SYS/BIOS */
    
      return 0;
    }
    
    /*******************************************************************************
     * @fn          AssertHandler
     *
     * @brief       This is the callback handler for asserts raised in the stack or
     *              the application.
     *
     *              An application developer is encouraged to extend this function
     *              for use by their own application.  To do this, add hal_assert.c
     *              to your project workspace, the path to hal_assert.h (this can
     *              be found on the stack side). Asserts are raised by including
     *              hal_assert.h and using macro HAL_ASSERT(cause) to raise an
     *              assert with argument assertCause.  the assertSubcause may be
     *              optionally set by macro HAL_ASSERT_SET_SUBCAUSE(subCause) prior
     *              to asserting the cause it describes. More information is
     *              available in hal_assert.h.
     *
     * input parameters
     *
     * @param       assertCause    - Assert cause as defined in hal_assert.h.
     * @param       assertSubcause - Optional assert subcause (see hal_assert.h).
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    void AssertHandler(uint8 assertCause, uint8 assertSubcause)
    {
      // Sleep 20 msec, allow NPI task to send pending events
      Task_sleep(20000/10);
      //Set current task to lowest priority
      Task_setPri(Task_self(), 1);
      // Free NPI task to send final NPI assert message
      NPIData_postAssertNpiMsgEvent(assertCause);
    
      // Open the display if the app has not already done so
      if ( !dispHandle )
      {
    #if !defined(Display_DISABLE_ALL)
      #if !defined(BOARD_DISPLAY_EXCLUDE_LCD)
        dispHandle = Display_open(Display_Type_LCD, NULL);
      #elif !defined (BOARD_DISPLAY_EXCLUDE_UART)
        dispHandle = Display_open(Display_Type_UART, NULL);
      #endif // BOARD_DISPLAY_EXCLUDE_LCD, BOARD_DISPLAY_EXCLUDE_UART
    #endif // Display_DISABLE_ALL
      }
    
      // check the assert cause
      switch (assertCause)
      {
        case HAL_ASSERT_CAUSE_INTERNAL_ERROR:
          // check the subcause
          if (assertSubcause == HAL_ASSERT_SUBCAUSE_FW_INERNAL_ERROR)
          {
          #if !defined(Display_DISABLE_ALL)
            Display_print0(dispHandle, 0, 0, "***ERROR***");
            Display_print0(dispHandle, 2, 0, ">> INTERNAL FW ERROR!");
          #endif
          }
          else
          {
          #if !defined(Display_DISABLE_ALL)
            Display_print0(dispHandle, 0, 0, "***ERROR***");
            Display_print0(dispHandle, 2, 0, ">> INTERNAL ERROR!");
          #endif
          }
    
          break;
    
        default:
        #if !defined(Display_DISABLE_ALL)
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> DEFAULT SPINLOCK!");
        #endif
          HAL_ASSERT_SPINLOCK;
      }
    
      return;
    }
    
    
    /*******************************************************************************
     * @fn          smallErrorHook
     *
     * @brief       Error handler to be hooked into TI-RTOS.
     *
     * input parameters
     *
     * @param       eb - Pointer to Error Block.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    void smallErrorHook(Error_Block *eb)
    {
      for (;;);
    }
    
    
    /*******************************************************************************
     */
    

    slave_main.txt
    /******************************************************************************
    
     @file  main.c
    
     @brief main entry of the BLE stack sample application.
    
     Group: WCS, BTS
     Target Device: cc13x2_26x2
    
     ******************************************************************************
     
     Copyright (c) 2013-2021, Texas Instruments Incorporated
     All rights reserved.
    
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions
     are met:
    
     *  Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.
    
     *  Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution.
    
     *  Neither the name of Texas Instruments Incorporated nor the names of
        its contributors may be used to endorse or promote products derived
        from this software without specific prior written permission.
    
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
     ******************************************************************************
     
     
     *****************************************************************************/
    
    /*******************************************************************************
     * INCLUDES
     */
    
    #include <xdc/runtime/Error.h>
    
    #include <ti/sysbios/knl/Clock.h>
    #include <ti/drivers/Power.h>
    #include <ti/drivers/power/PowerCC26XX.h>
    #include <ti/sysbios/BIOS.h>
    
    #include <icall.h>
    #include "hal_assert.h"
    #include "bcomdef.h"
    #include "rtls_slave.h"
    #include "rtls_ctrl_api.h"
    
    /* Header files required to enable instruction fetch cache */
    #include <inc/hw_memmap.h>
    #include <driverlib/vims.h>
    
    #ifndef USE_DEFAULT_USER_CFG
    #include "ble_user_config.h"
    // BLE user defined configuration
    icall_userCfg_t user0Cfg = BLE_USER_CFG;
    #endif // USE_DEFAULT_USER_CFG
    
    #include <ti/display/Display.h>
    
    /*******************************************************************************
     * MACROS
     */
    
    /*******************************************************************************
     * CONSTANTS
     */
    
    /*******************************************************************************
     * TYPEDEFS
     */
    
    /*******************************************************************************
     * LOCAL VARIABLES
     */
    
    /*******************************************************************************
     * GLOBAL VARIABLES
     */
    
    /*******************************************************************************
     * EXTERNS
     */
    
    extern void AssertHandler(uint8 assertCause, uint8 assertSubcause);
    
    extern Display_Handle dispHandle;
    
    /*******************************************************************************
     * @fn          Main
     *
     * @brief       Application Main
     *
     * input parameters
     *
     * @param       None.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    int main()
    {
      /* Register Application callback to trap asserts raised in the Stack */
      RegisterAssertCback(AssertHandler);
    
      Board_initGeneral();
    
      // Enable iCache prefetching
      VIMSConfigure(VIMS_BASE, TRUE, TRUE);
      // Enable cache
      VIMSModeSet(VIMS_BASE, VIMS_MODE_ENABLED);
    
    #if !defined( POWER_SAVING )
      /* Set constraints for Standby, powerdown and idle mode */
      // PowerCC26XX_SB_DISALLOW may be redundant
      Power_setConstraint(PowerCC26XX_SB_DISALLOW);
      Power_setConstraint(PowerCC26XX_IDLE_PD_DISALLOW);
    #endif // POWER_SAVING
    
      /* Update User Configuration of the stack */
      user0Cfg.appServiceInfo->timerTickPeriod = Clock_tickPeriod;
      user0Cfg.appServiceInfo->timerMaxMillisecond  = ICall_getMaxMSecs();
    
      /* Initialize ICall module */
      ICall_init();
    
      /* Start tasks of external images - Priority 5 */
      ICall_createRemoteTasks();
    
      RTLSSlave_createTask();
    
      /* Kick off RTLS Control module - Priority 2 */
      rtlsConfiguration_t rtlsConfig;
    
      rtlsConfig.rtlsCapab = (rtlsCapabilities_e)(RTLS_CAP_RTLS_SLAVE | RTLS_CAP_AOA_TX);
    
      rtlsConfig.devId = DeviceFamily_ID;
      rtlsConfig.revNum = RTLS_CTRL_REV;
      rtlsConfig.maxNumConns = 1;
    
      memcpy(rtlsConfig.identifier, CHIP_ID_ADDR, CHIP_ID_SIZE);
    
      rtlsConfig.rtlsAppCb = RTLSSlave_rtlsCtrlMsgCb;
    
      RTLSCtrl_open(&rtlsConfig);
    
      /* enable interrupts and start SYS/BIOS */
      BIOS_start();
    
      return 0;
    }
    
    
    /*******************************************************************************
     * @fn          AssertHandler
     *
     * @brief       This is the Application's callback handler for asserts raised
     *              in the stack.  When EXT_HAL_ASSERT is defined in the Stack
     *              project this function will be called when an assert is raised,
     *              and can be used to observe or trap a violation from expected
     *              behavior.
     *
     *              As an example, for Heap allocation failures the Stack will raise
     *              HAL_ASSERT_CAUSE_OUT_OF_MEMORY as the assertCause and
     *              HAL_ASSERT_SUBCAUSE_NONE as the assertSubcause.  An application
     *              developer could trap any malloc failure on the stack by calling
     *              HAL_ASSERT_SPINLOCK under the matching case.
     *
     *              An application developer is encouraged to extend this function
     *              for use by their own application.  To do this, add hal_assert.c
     *              to your project workspace, the path to hal_assert.h (this can
     *              be found on the stack side). Asserts are raised by including
     *              hal_assert.h and using macro HAL_ASSERT(cause) to raise an
     *              assert with argument assertCause.  the assertSubcause may be
     *              optionally set by macro HAL_ASSERT_SET_SUBCAUSE(subCause) prior
     *              to asserting the cause it describes. More information is
     *              available in hal_assert.h.
     *
     * input parameters
     *
     * @param       assertCause    - Assert cause as defined in hal_assert.h.
     * @param       assertSubcause - Optional assert subcause (see hal_assert.h).
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    void AssertHandler(uint8 assertCause, uint8 assertSubcause)
    {
      // Open the display if the app has not already done so
      if ( !dispHandle )
      {
        dispHandle = Display_open(Display_Type_ANY, NULL);
      }
    
      Display_print0(dispHandle, 0, 0, ">>>STACK ASSERT");
    
      // check the assert cause
      switch (assertCause)
      {
        case HAL_ASSERT_CAUSE_OUT_OF_MEMORY:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> OUT OF MEMORY!");
          break;
    
        case HAL_ASSERT_CAUSE_INTERNAL_ERROR:
          // check the subcause
          if (assertSubcause == HAL_ASSERT_SUBCAUSE_FW_INERNAL_ERROR)
          {
            Display_print0(dispHandle, 0, 0, "***ERROR***");
            Display_print0(dispHandle, 2, 0, ">> INTERNAL FW ERROR!");
          }
          else
          {
            Display_print0(dispHandle, 0, 0, "***ERROR***");
            Display_print0(dispHandle, 2, 0, ">> INTERNAL ERROR!");
          }
          break;
    
        case HAL_ASSERT_CAUSE_ICALL_ABORT:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> ICALL ABORT!");
          HAL_ASSERT_SPINLOCK;
          break;
    
        case HAL_ASSERT_CAUSE_ICALL_TIMEOUT:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> ICALL TIMEOUT!");
          HAL_ASSERT_SPINLOCK;
          break;
    
        case HAL_ASSERT_CAUSE_WRONG_API_CALL:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> WRONG API CALL!");
          HAL_ASSERT_SPINLOCK;
          break;
    
      default:
          Display_print0(dispHandle, 0, 0, "***ERROR***");
          Display_print0(dispHandle, 2, 0, ">> DEFAULT SPINLOCK!");
          HAL_ASSERT_SPINLOCK;
      }
    
      return;
    }
    
    
    /*******************************************************************************
     * @fn          smallErrorHook
     *
     * @brief       Error handler to be hooked into TI-RTOS.
     *
     * input parameters
     *
     * @param       eb - Pointer to Error Block.
     *
     * output parameters
     *
     * @param       None.
     *
     * @return      None.
     */
    void smallErrorHook(Error_Block *eb)
    {
      for (;;);
    }
    
    /*******************************************************************************
     */
    

    您看看是哪里出了问题,期待您的答复,谢谢。

  • 另一块BOOSTXL-AoA也要接到开发板上(和图2一样)

  • 对,那两张图是为了让您看到内部情况才这么照的,我所用的设备如图:

    您看这样是对的吗?期待您的答复,谢谢。

  • 用板子自带的黑色USB线连接,其他usb线可能会收不到数据

    若还是不行,再对passive main.c做如下修改

    rtlsConfig.rtlsCapab = (rtlsCapabilities_e)(RTLS_CAP_RTLS_PASSIVE | RTLS_CAP_CM | RTLS_CAP_AOA_RX);

  • 您好!感谢您的回答!

    我按照您的回答进行了操作,发现结果还是一样的,并且我还发现,将passive和master程序交叉分别下载到两个板子中,有一个板子只能显示几秒钟的passive信息,然后停止,另外一个板子则只能显示几分钟的passive信息,然后停止,master的信息是一直显示的,请问您还有其他的方法吗?期待您的答复,谢谢。

  • 还有新的开发板吗,直接将master程序烧录到新开发板中,不连BOOSTXL-AoA也不用移动电容

  • 您好,请问您的意思是要我这边进行“只有passive提供AOA测量”这个操作吗?

  • 不是,还是测这个,这样master AOA角度值会一直不变,只是为了验证显示问题

  • 您好,这样操作的话是正常的,passive的数据出现了,并且一直都没有断开连接!!

  • 您好,感谢您的回答!我下载了sdk4.30的例程,但是我使用里面的rtls ui的可视化界面时,它总是在扫描设备,

     ,就一直卡在这一步,我看了他的README,和sdk5.10是一样的,请问您知道这是怎么回事吗?

  • 关闭后多试几次,你上面交叉测试两组的rtls_ui版本号也不对

  • 您好,感谢您的回答!

    关于sdk4.30:我尝试了很多次,都是这样的;

    关于交叉测试:确实,不知为什么当时的版本号不对,所以我重新进行了测试:以下是测试结果

    从这两章图中可以看出,两个板子当充当master的角色时,都是可以显示出波形的,但是当充当passive时,只能显示一会,但是一个可以显示几分钟,一个只能显示几秒钟,请问为什么交换后显示的持续时间是不一样的?

    另外,我看到了这个https://e2echina.ti.com/support/wireless-connectivity/bluetooth/f/bluetooth-forum/188156/cc26x2r-master-passive-passive,里面说是和信号和环境有关系,但是为什么在同样的环境和信号中,交叉测试之后,不同的板子会显示持续时间不同的passive信息?

    期待您的答复!

  • 关于sdk4.30:我尝试了很多次,都是这样的;

    浏览器换成Edge试试

    请问为什么交换后显示的持续时间是不一样的?

    你拿到空旷的地方测一下看看是否会有改变

  • 您好!浏览器更换后,sdk4.30显示出来了,但是结果和sdk5.10的是一样的;

    我在空旷的地方进行了测试,发现结果还是那样,passive总是会不定时的断开。而且交换后持续的时间还是不一样。

  • SDK4.30应该不会有问题,你换台电脑分别试一下SDK4.30和SDK5.10(有英文操作系统最好)

    用板子自带的usb线连接测试

  • 您好!感谢您的回答,我看了官方文档。好像passive不定时断开这个问题确实存在,感谢您一直以来细心的帮助。

    另外我这边还有两个问题,希望能得到您的答复:

    1   一个slave是否能给多个master发送信号?2   一个master是否能接受多个slave发送的信号?

  • 你的paasive只显示一会儿数据基本上是环境噪声太大导致断开的

    你带到室外空旷的地带应该会好很多,或者在消音室中测量就会有连续的结果

    1   一个slave是否能给多个master发送信号?2   一个master是否能接受多个slave发送的信号?

    这是另一个问题了,为方便其他人查找,建议你重开一个新帖