diff --git a/source/position_sense/hdsl/firmware/datalink.asm b/source/position_sense/hdsl/firmware/datalink.asm index 725c22a..6950c44 100644 --- a/source/position_sense/hdsl/firmware/datalink.asm +++ b/source/position_sense/hdsl/firmware/datalink.asm @@ -1074,11 +1074,11 @@ send_header_encode_sec_subblock_end: lsr REG_TMP0.b0, REG_FNC.b2, 2 or REG_FNC.b3, REG_FNC.b3, REG_TMP0.b0 lsl REG_FNC.b2, REG_FNC.b2, 6 - qbbc transport_layer_send_msg_done1, H_FRAME.flags, FLAG_NORMAL_FLOW .if $defined("HDSL_MULTICHANNEL") PUSH_FIFO_1_8x PUSH_FIFO_2_8x .endif +; transport_layer_send_msg sends short/long message (if pending) and also checks for QMLW/POS errors jmp transport_layer_send_msg transport_layer_send_msg_done1: .if $defined("HDSL_MULTICHANNEL") diff --git a/source/position_sense/hdsl/firmware/hdsl_master_icssg_300_mhz_bin.h b/source/position_sense/hdsl/firmware/hdsl_master_icssg_300_mhz_bin.h index aecf04b..9167ea6 100644 --- a/source/position_sense/hdsl/firmware/hdsl_master_icssg_300_mhz_bin.h +++ b/source/position_sense/hdsl/firmware/hdsl_master_icssg_300_mhz_bin.h @@ -55,7 +55,7 @@ */ const unsigned int Hiperface_DSL2_0[]= { -0x21067400, +0x21067500, 0x24000125, 0x2eff818f, 0x24001d8d, @@ -71,8 +71,8 @@ const unsigned int Hiperface_DSL2_0[]= { 0x0b01e0e0, 0x0501e0e0, 0x4f00e0ff, -0x230216d1, -0x2301f7d1, +0x230215d1, +0x2301f6d1, 0x05012525, 0x6f0025f0, 0x2eff8f8e, @@ -84,7 +84,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x2300ef9d, 0x05012525, 0x5100254c, -0x2301f7d1, +0x2301f6d1, 0xd70170f8, 0xcf0723f7, 0x1f02c4c4, @@ -127,18 +127,18 @@ const unsigned int Hiperface_DSL2_0[]= { 0x5101450a, 0x2400040d, 0x040d6666, -0x230253d1, +0x230252d1, 0x79000009, 0x69014508, 0x2400060d, 0x040d6666, -0x230253d1, +0x230252d1, 0x79000004, 0x2400010d, 0x000d6666, -0x230253d1, +0x230252d1, 0x1d03c4c4, -0x2301f7d1, +0x2301f6d1, 0x51000c09, 0xd104ff00, 0xd703ffff, @@ -151,7 +151,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0xd104ff00, 0xd703ffff, 0x24002f1e, -0x2304659d, +0x2304669d, 0x05014545, 0x4f0045d2, 0x24000070, @@ -159,7 +159,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x24000845, 0x1f01c4c4, 0x7f0000cd, -0x21023200, +0x21023100, 0x10d1d182, 0x240000cd, 0xc918ff00, @@ -170,7 +170,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1e05cdcd, 0x0b018001, 0x14000130, -0x230276d1, +0x230275d1, 0x6f0005f7, 0x240120eb, 0xf0cd0b0d, @@ -189,7 +189,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1e05cdcd, 0x0b018001, 0x14000130, -0x230276d1, +0x230275d1, 0x6f0005f7, 0x24000001, 0x1c2d5050, @@ -212,7 +212,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1f00cdcd, 0x0b018021, 0x14002130, -0x230276d1, +0x230275d1, 0x110fcdc0, 0x240168eb, 0xf0c00b00, @@ -237,7 +237,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1e05cdcd, 0x0b018001, 0x14000130, -0x230276d1, +0x230275d1, 0x6f0005f7, 0x240120eb, 0xf0cd0b0d, @@ -256,7 +256,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1e05cdcd, 0x0b018001, 0x14000130, -0x230276d1, +0x230275d1, 0x6f0005f7, 0x24000001, 0x1c2d5050, @@ -279,7 +279,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1f00cdcd, 0x0b018021, 0x14002130, -0x230276d1, +0x230275d1, 0x110fcdc0, 0x240168eb, 0xf0c00b00, @@ -296,7 +296,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x20d10000, 0x24000605, 0x2eff8283, -0x230261d1, +0x230260d1, 0x240000c0, 0x2400002d, 0x230069d1, @@ -350,32 +350,32 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1f04c4c4, 0x2400060d, 0x040d6666, -0x230253d1, +0x230252d1, 0x79000006, 0xc9005005, 0x51fd0304, 0x2400020d, 0x040d6666, -0x230253d1, +0x230252d1, 0xc9017005, 0x2400010d, 0x040d6666, -0x230253d1, +0x230252d1, 0x79000005, 0xc9015004, 0x2400020d, 0x040d6666, -0x230253d1, +0x230252d1, 0xc9027004, 0x2400010d, 0x040d6666, -0x230253d1, +0x230252d1, 0x111870e0, 0x5100e006, 0x1f03c4c4, 0x2400020d, 0x040d6666, -0x230253d1, +0x230252d1, 0x79000008, 0xc9035002, 0x69fd2403, @@ -383,7 +383,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x51fd0404, 0x2400020d, 0x040d6666, -0x230253d1, +0x230252d1, 0x2400052d, 0x24000605, 0x2300acd1, @@ -395,7 +395,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x0b01e0e0, 0x0501e0e0, 0x4f00e0ff, -0x230216d1, +0x230215d1, 0x100d0d63, 0x0908f5f5, 0x0b18f4e0, @@ -407,7 +407,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1f05c4c4, 0x2400080d, 0x040d6666, -0x230253d1, +0x230252d1, 0x14637878, 0x69014502, 0x15ff7878, @@ -451,9 +451,9 @@ const unsigned int Hiperface_DSL2_0[]= { 0x808113c1, 0xc901c405, 0x69084502, -0x21028300, +0x21028200, 0x69074502, -0x2102de00, +0x2102dd00, 0x51000c2b, 0x51015b04, 0x100c0c02, @@ -522,15 +522,14 @@ const unsigned int Hiperface_DSL2_0[]= { 0x0b024d00, 0x12006d6d, 0x09064d4d, -0xc901c402, -0x2103dc00, +0x2103db00, 0xd104ff00, 0xd703ffff, 0x106d6d1e, 0x511f0d03, 0x51190d02, 0x79000003, -0x23063bd1, +0x23063cd1, 0x7900001a, 0xd104ff00, 0xd703ffff, @@ -542,7 +541,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x511f0d12, 0x51190d11, 0xc901c402, -0x21032100, +0x21032000, 0x910c3c81, 0x240117e0, 0x04e1e0e0, @@ -573,7 +572,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x810605c1, 0x24001f8d, 0x2400044d, -0x230247d1, +0x230246d1, 0x05016d6d, 0x51006d0c, 0xd104ff00, @@ -581,10 +580,10 @@ const unsigned int Hiperface_DSL2_0[]= { 0x24000b1e, 0x24000f8d, 0x2400044d, -0x230247d1, +0x230246d1, 0x24001f8d, 0x2400034d, -0x230247d1, +0x230246d1, 0x05016d6d, 0x6f006df6, 0x10ebebd1, @@ -609,7 +608,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x10d1d18b, 0x2400040d, 0x040d6666, -0x230253d1, +0x230252d1, 0x108b8bd1, 0x24001fc0, 0x810605c0, @@ -637,7 +636,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1f00c0c0, 0x1f008181, 0x81505880, -0x2104ef00, +0x2104f000, 0x91042580, 0xd708e0ff, 0x91042580, @@ -717,11 +716,11 @@ const unsigned int Hiperface_DSL2_0[]= { 0x81521801, 0x2400060d, 0x040d6666, -0x230253d1, +0x230252d1, 0x7900003f, 0x2400010d, 0x000d6666, -0x230253d1, +0x230252d1, 0x69fd7309, 0x913d1880, 0x1f040000, @@ -769,7 +768,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x813a188d, 0x24000019, 0x79000002, -0x2304cfd1, +0x2304d0d1, 0x10535300, 0x10333320, 0x10131340, @@ -800,13 +799,13 @@ const unsigned int Hiperface_DSL2_0[]= { 0x81541800, 0x2400060d, 0x040d6666, -0x230253d1, +0x230252d1, 0x79000017, 0x1d058000, 0x81541800, 0x2400010d, 0x000d6666, -0x230253d1, +0x230252d1, 0x91541800, 0x69fd6204, 0x1f028000, @@ -858,10 +857,10 @@ const unsigned int Hiperface_DSL2_0[]= { 0x21018f00, 0x91001800, 0xc9070002, -0x21023200, +0x21023100, 0x91351800, 0xc9070002, -0x21023200, +0x21023100, 0x51005c2c, 0x110ff602, 0x49085c02, @@ -932,7 +931,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x24003001, 0xd1066b0e, 0x2400010d, -0x230666d1, +0x230667d1, 0x68ab8d45, 0x13803b3b, 0x913d1880, @@ -945,7 +944,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x81531800, 0x7900003b, 0x2400020d, -0x230666d1, +0x230667d1, 0x688b8d38, 0x8137184b, 0x13803b3b, @@ -988,7 +987,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1d09c4c4, 0x2400040d, 0x24003001, -0x230666d1, +0x230667d1, 0x15ff8d9c, 0x69005c34, 0x51009c33, @@ -1042,7 +1041,8 @@ const unsigned int Hiperface_DSL2_0[]= { 0x2400181b, 0xc9027a02, 0x01081b1b, -0x2101e800, +0x2101e700, +0xc901c460, 0x24001031, 0x91001800, 0xc9060007, @@ -1153,6 +1153,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x1d008080, 0x81aa1800, 0x91031800, +0x117f0000, 0x590e0007, 0x91505880, 0x1f0a8080, @@ -1179,7 +1180,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x79000002, 0x1d030101, 0x81501801, -0x2101d500, +0x2101d400, 0x24000000, 0x814e1800, 0xd103c40a, @@ -1197,7 +1198,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x81381800, 0x91411820, 0x60200002, -0x21023200, +0x21023100, 0x109d9d8b, 0x0901c880, 0x090288c0, @@ -1223,7 +1224,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x108787c7, 0x04c98087, 0x108080c9, -0x2304b6d1, +0x2304b7d1, 0x108b8b9d, 0x91aa1800, 0x1f018000, @@ -1243,7 +1244,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x108787c7, 0x04c98087, 0x108080c9, -0x2304b6d1, +0x2304b7d1, 0x91983880, 0x10eeeee1, 0x24000061, @@ -1336,7 +1337,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x810b1800, 0x81441800, 0x2eff8383, -0x23027b9d, +0x23027a9d, 0x24000866, 0x2400000c, 0x2400002c, @@ -1366,7 +1367,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x9101185b, 0x51005b0e, 0x7900000d, -0x230623d1, +0x230624d1, 0x91dc388c, 0x240000e2, 0x91e21882, @@ -1374,7 +1375,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x100c0c2a, 0x106c6c4a, 0x102c2c6a, -0x230623d1, +0x230624d1, 0x0b01e2e2, 0x0501e2e2, 0x4f00e2ff, @@ -1384,13 +1385,13 @@ const unsigned int Hiperface_DSL2_0[]= { 0x240000ca, 0x24001f8d, 0x23016a9d, -0x2301f7d1, +0x2301f6d1, 0x0101caca, 0x6f02cafc, 0x240000ca, 0x2400198d, 0x23016a9d, -0x2301f7d1, +0x2301f6d1, 0x0101caca, 0x6f10cafc, 0x2400017b, @@ -1497,7 +1498,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x0b077200, 0x12001313, 0x0901f2f2, -0x23062fd1, +0x230630d1, 0x510e6506, 0x6f010df6, 0x10656546, @@ -1534,16 +1535,16 @@ const unsigned int Hiperface_DSL2_0[]= { 0xd703ffff, 0x24001b8d, 0x23016a9d, -0x2305f59d, -0x23062fd1, +0x2305f69d, +0x230630d1, 0x6f010deb, 0x05012525, 0x4f0025f8, 0x24001025, 0x24001c8d, 0x23016a9d, -0x2305f59d, -0x23062fd1, +0x2305f69d, +0x230630d1, 0x6f010dd8, 0x05012525, 0x4f0025fa, @@ -1564,7 +1565,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x810d3801, 0x2400000d, 0x000d6666, -0x230253d1, +0x230252d1, 0x1f08c4c4, 0x110fe05d, 0x01085d5d, @@ -1578,10 +1579,10 @@ const unsigned int Hiperface_DSL2_0[]= { 0x24ffff81, 0x0a00e1e1, 0x81e43881, -0x2301f7d1, +0x2301f6d1, 0x21001600, 0x24002005, -0x230261d1, +0x230260d1, 0x24000080, 0x2405a4eb, 0x2eff8992, @@ -1594,7 +1595,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x10000020, 0x0b018001, 0x14000130, -0x230276d1, +0x230275d1, 0x6f0005f6, 0x24001d05, 0xc918ff00, @@ -1606,7 +1607,7 @@ const unsigned int Hiperface_DSL2_0[]= { 0x10000020, 0x0b018001, 0x14000130, -0x230276d1, +0x230275d1, 0x6f0105f6, 0xc918ff00, 0x101f1f00, @@ -1623,8 +1624,8 @@ const unsigned int Hiperface_DSL2_0[]= { 0x0501e0e0, 0x4f00e0ff, 0x1d007e7e, -0x230216d1, -0x2301f7d1, +0x230215d1, +0x2301f6d1, 0x209d0000, 0x91502181, 0x91502194, @@ -1710,4 +1711,4 @@ const unsigned int Hiperface_DSL2_0[]= { 0x91003c82, 0x1308e2e2, 0x81003c82, -0x2104ef00 }; +0x2104f000 }; diff --git a/source/position_sense/hdsl/firmware/transport.asm b/source/position_sense/hdsl/firmware/transport.asm index 6819b66..d1d20e2 100644 --- a/source/position_sense/hdsl/firmware/transport.asm +++ b/source/position_sense/hdsl/firmware/transport.asm @@ -740,6 +740,8 @@ transport_layer_recv_msg_end: ;---------------------------------------------------- transport_layer_send_msg: ;TODO: reduce cycles +; Skip message processing until one v-frame is complete + qbbc transport_layer_send_msg_end, H_FRAME.flags, FLAG_NORMAL_FLOW ldi SEND_PARA, M_PAR_IDLE ;check if we discard any messages and reset parameter channel lbco ®_TMP0.b0, MASTER_REGS_CONST, SYS_CTRL, 1 @@ -935,6 +937,8 @@ transport_layer_no_qmlw_event: ; Update QMLW bits in ONLINE_STATUS registers lbco ®_TMP0.b0, MASTER_REGS_CONST, MASTER_QM, 1 + and REG_TMP0.b0, REG_TMP0.b0, 0x7f +; Set QMLW if value is < 14 qble transport_layer_online_status_qm_not_low, REG_TMP0.b0, 14 ; Set QMLW bits lbco ®_TMP0, MASTER_REGS_CONST, ONLINE_STATUS_D_H, 6