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.

IWR6843: UART Output Data Format

Part Number: IWR6843

Hi,

I'm having few issues with Long Range people detection Data formats:

- Frame header (52 bytes) differs from 3D people counting frame header (48 bytes): is there any reason for that?

(BTW, in downloaded toolbox, \mmwave_industrial_toolbox_4_8_0\labs\people_counting\docs\3D_people_counting_demo_implementation_guide.pdf, last chapter states that Frame header size is 52 bytes -> I guess that's not updated document? I think, in v3 size Frame header for Counting people was 52 bytes and now it got smaller, so can I expect the same happening for Long range detection?)

- TLV header length -> comment states that it include header size (% TLV object Length, in bytes, including TLV header). But my tests says, that cannot be true. Numbers what I read, says that length is only for TLV object. Can it be somehow verified?

Best regards,

Ugne Maslova

  • Hello,

    If you want to see exactly how the data is sent over on the device please refer the function

    TrackerDemo_transmitProcessedOutput() from the following file:

    <MMWAVE_INDUSTRIAL_TOOLBOX_INSTALL_PATH>\labs\long_range_people_detection\68xx_long_range_people_det\src\mss\mss_main.c - line 1589.

    This will give you the ability to cross reference with that your parser is doing and use it to debug your parser.

    Best regards,

    Connor Desmond

  • I checked, and I believe there is a bug

    /* Side info */
    tl[tlvIdx].type = 9;//MMWDEMO_OUTPUT_MSG_DETECTED_POINTS_SIDE_INFO;
    tl[tlvIdx].length = sizeof(DPIF_PointCloudSideInfo) * result->numObjOut;
    packetLen += sizeof(MmwDemo_output_message_tl) + tl[tlvIdx].length;
    outputMessage.numTLVs += 1;
    tlvIdx++;

    Should be 

    tl[tlvIdx].length = sizeof(DPIF_PointCloudSideInfo) * result->numObjOut + sizeof(MmwDemo_output_message_tl);
    packetLen += tl[tlvIdx].length;

    Then length includes header length as defined in docs.

  • Hello,

    This is not a bug. The structure of the code that you highlighted is to build the type and length of each TLV. Additionally, the total length of the frame minus the header is kept track of in a variable called packetLen. Then once all of the TLV information is built the header is sent followed by the TLVs. Please see lines 1734-1735 in ITB 4.8. to see how this is done. packetLen is to keep track of the packet payload non inclusive of the header itself. The size of the header is fixed, no reason to keep track of its length.

    Best regards,

    Connor Desmond

  • You right about paketLen, problem is with tl[tlvdx].length. According documentation, it should include header size as well and now it is not including it. You can fix documentation, but it would be nice if all products are consistent.

    For example, 3D people counting is including header size.

  • Hello,

    The link you provided above is for the people counting demo which has a frame header length of 48 where as the long range people counting demo has a frame header of length 52. These are two completely different demos.

    \mmwave_industrial_toolbox_4_8_0\labs\people_counting\docs\3D_people_counting_demo_implementation_guide.pdf

    According to the following user guide:

    <MMWAVE_INDUSTRIAL_TOOLBOX_INSTALL_PATH>/labs/long_range_people_detection/68xx_long_range_people_det/docs/68xx_long_range_people_det_user_guide.html

    As can seen above the user guide and code match, thus there is no issue. You were using a different demos definition of size and applying it to this demo which is not correct according to the documentation. Now if you want to modify it for a particular reason then you can. You will just need to have parser which takes that difference into account.

    Best regards,

    Connor Desmond

  • We should have different documentations.