*add calibration setting
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
declare -A calMap
|
||||
calMap[JG01]="\{\n\
|
||||
\{ 0, 2525, -7533, -6846\}, \{ 0, 12726, -7818, -6860\},\n\
|
||||
\{ 0, 2490, -7836, -6907\}, \{ 0, 4479, -7716, -6837\},\n\
|
||||
\{ 0, 6409, -7770, -6776\}, \{ 0, 14616, -7977, -6816\},\n\
|
||||
\{ 0, -22557, -8002, -6911\}, \{ 0, -22587, -8121, -6918\},\n\
|
||||
\{ 0, -1124, -8123, -7030\}, \{ 0, -152, -8219, -7042\},\n\
|
||||
\{ 0, 1823, -8209, -7130\}, \{ 0, 1790, -8290, -7214\},\n\
|
||||
\{ 0, 1669, -8362, -7283\}, \{ 0, 1634, -8459, -7276\},\n\
|
||||
\{ 0, 1615, -8315, -7415\}, \{ 0, 1698, -8168, -7366\},\n\
|
||||
\{ 0, 1535, -8285, -7520\}, \{ 0, 1619, -8285, -7532\},\n\
|
||||
\{ 0, 1609, -8201, -7693\}, \{ 0, 1671, -8145, -7769\},\n\
|
||||
\{ 0, 1676, -8135, -7805\}, \{ 0, 951, -10279, -8871\},\n\
|
||||
\{ 0, 976, -10235, -8978\}, \{ 0, 1118, -10127, -9019\},\n\
|
||||
\{ 0, 1175, -10003, -9007\}, \{ 0, 1386, -9847, -9039\},\n\
|
||||
\{ 0, 1535, -9572, -9058\}, \{ 0, 1729, -9493, -9006\},\n\
|
||||
\{ 0, -1158, -9312, -9003\}, \{ 0, 23771, -9147, -8928\},\n\
|
||||
\{ 0, 20733, -9074, -8924\}, \{ 0, 2455, -8841, -8886\},\n\
|
||||
\{ 0, 2622, -8718, -8735\}, \{ 0, 2791, -8615, -8705\},\n\
|
||||
\{ 0, 2861, -8168, -8331\}, \{ 0, 3076, -8091, -8218\},\n\
|
||||
\{ 0, 3257, -8046, -8100\}, \{ 0, 3331, -7923, -8073\},\n\
|
||||
\{ 0, 3396, -7826, -7994\}, \{ 0, 3478, -7842, -8016\},\n\
|
||||
\{ 0, 3518, -7846, -7765\}, \{ 0, 3585, -7753, -7715\},\n\
|
||||
\{ 0, 150, -8145, -8591\}, \{ 0, 192, -8090, -8570\},\n\
|
||||
\{ 0, 207, -8150, -8597\}, \{ 0, 178, -8142, -8656\},\n\
|
||||
\{ 0, 89, -8557, -8688\}, \{ 0, 107, -8614, -8733\},\n\
|
||||
\{ 0, 194, -8605, -8782\}, \{ 0, 153, -8655, -8881\},\n\
|
||||
\{ 0, 70, -8615, -8952\}, \{ 0, 35, -8596, -9148\},\n\
|
||||
\{ 0, 49, -8636, -9286\}, \{ 0, 6, -8587, -9435\},\n\
|
||||
\{ 0, -51, -8540, -9549\}, \{ 0, -65, -8588, -9700\},\n\
|
||||
\{ 0, -55, -8503, -9820\}, \{ 0, -20, -8414, -9907\},\n\
|
||||
\{ 0, -112, -8481, -10031\}, \{ 0, -69, -8535, -10185\},\n\
|
||||
\{ 0, 2, -8550, -10052\}, \{ 0, -1, -8493, -10291\},\n\
|
||||
\{ 0, -73, -8441, -10380\}, \{ 0, 1958, -6930, -8295\},\n\
|
||||
\{ 0, -1148, -6939, -8396\}, \{ 0, 1915, -6784, -8370\},\n\
|
||||
\{ 0, 1871, -6970, -8514\}, \{ 0, 1821, -6974, -8387\},\n\
|
||||
\{ 0, 1781, -6906, -8431\}, \{ 0, 1736, -6897, -8462\},\n\
|
||||
\{ 0, 1664, -7024, -8377\}, \{ 0, 1629, -7127, -8436\},\n\
|
||||
\{ 0, 1603, -7148, -8528\}, \{ 0, 1577, -7198, -8500\},\n\
|
||||
\{ 0, 1528, -7311, -8512\}, \{ 0, 1577, -7390, -8570\},\n\
|
||||
\{ 0, 1616, -7436, -8572\}, \{ 0, 1589, -7597, -8590\},\n\
|
||||
\{ 0, 1722, -7550, -8568\}, \{ 0, 1741, -7691, -8449\},\n\
|
||||
\{ 0, 1767, -7775, -8328\}, \n\
|
||||
};"
|
||||
|
||||
calMap[JG02]="\{\n\
|
||||
\{ 0, 1573, -6646, -6900\}, \{ 0, 1251, -7021, -7119\},\n\
|
||||
\{ 0, 1157, -7139, -7184\}, \{ 0, 970, -7380, -7280\},\n\
|
||||
\{ 0, 803, -7646, -7340\}, \{ 0, 243, -7702, -7475\},\n\
|
||||
\{ 0, 116, -7899, -7666\}, \{ 0, 345, -7915, -7779\},\n\
|
||||
\{ 0, 257, -8072, -7835\}, \{ 0, 63, -8061, -7871\},\n\
|
||||
\{ 0, -40, -8151, -7949\}, \{ 0, -144, -8363, -8066\},\n\
|
||||
\{ 0, -184, -8320, -8111\}, \{ 0, -360, -8458, -8205\},\n\
|
||||
\{ 0, -426, -8583, -8238\}, \{ 0, -444, -8534, -8338\},\n\
|
||||
\{ 0, -451, -8508, -8371\}, \{ 0, -610, -8581, -8378\},\n\
|
||||
\{ 0, -605, -8582, -8381\}, \{ 0, -1401, -8503, -8391\},\n\
|
||||
\{ 0, -2160, -8656, -8346\}, \{ 0, 243, -9749, -9637\},\n\
|
||||
\{ 0, -503, -9663, -9572\}, \{ 0, -444, -9526, -9554\},\n\
|
||||
\{ 0, -495, -9581, -9559\}, \{ 0, -463, -9515, -9427\},\n\
|
||||
\{ 0, -1209, -9399, -9343\}, \{ 0, -356, -9263, -9275\},\n\
|
||||
\{ 0, -200, -9145, -9160\}, \{ 0, -110, -9062, -9013\},\n\
|
||||
\{ 0, -165, -9138, -8950\}, \{ 0, -104, -9094, -8849\},\n\
|
||||
\{ 0, -744, -9062, -8679\}, \{ 0, -743, -9084, -8557\},\n\
|
||||
\{ 0, -613, -8622, -8069\}, \{ 0, -492, -8651, -7949\},\n\
|
||||
\{ 0, 76, -8666, -7826\}, \{ 0, 362, -8890, -7855\},\n\
|
||||
\{ 0, -204, -8686, -7668\}, \{ 0, -305, -8955, -7710\},\n\
|
||||
\{ 0, -199, -8941, -7435\}, \{ 0, -141, -8992, -7377\},\n\
|
||||
\{ 0, -1015, -8907, -7741\}, \{ 0, -886, -8961, -7784\},\n\
|
||||
\{ 0, -594, -9151, -7921\}, \{ 0, -875, -9062, -7860\},\n\
|
||||
\{ 0, -1280, -9528, -7885\}, \{ 0, -379, -9555, -8104\},\n\
|
||||
\{ 0, -291, -9633, -8172\}, \{ 0, -1145, -9625, -8226\},\n\
|
||||
\{ 0, -1437, -9653, -8314\}, \{ 0, -1372, -9610, -8489\},\n\
|
||||
\{ 0, -208, -9649, -8693\}, \{ 0, -202, -9527, -8755\},\n\
|
||||
\{ 0, 120, -9542, -8873\}, \{ 0, 126, -9448, -9003\},\n\
|
||||
\{ 0, 167, -9519, -9142\}, \{ 0, 459, -9523, -9194\},\n\
|
||||
\{ 0, 41, -9266, -9117\}, \{ 0, 189, -9303, -9236\},\n\
|
||||
\{ 0, 7, -9305, -9289\}, \{ 0, -32, -9342, -9391\},\n\
|
||||
\{ 0, -106, -9252, -9433\}, \{ 0, -195, -9450, -7698\},\n\
|
||||
\{ 0, -84, -9434, -7715\}, \{ 0, 126, -9365, -7699\},\n\
|
||||
\{ 0, 244, -9474, -7798\}, \{ 0, 112, -9616, -7895\},\n\
|
||||
\{ 0, 514, -9631, -7921\}, \{ 0, 468, -9609, -7939\},\n\
|
||||
\{ 0, -209, -9770, -7983\}, \{ 0, -329, -9925, -8028\},\n\
|
||||
\{ 0, -845, -9918, -8117\}, \{ 0, 44, -9921, -8106\},\n\
|
||||
\{ 0, 251, -10042, -8254\}, \{ 0, 277, -10008, -8327\},\n\
|
||||
\{ 0, 737, -10139, -8391\}, \{ 0, 1260, -10272, -8496\},\n\
|
||||
\{ 0, -17449, -10172, -8508\}, \{ 0, -6484, -10284, -8635\},\n\
|
||||
\{ 0, 541, -10256, -8560\}, \n\
|
||||
};"
|
||||
|
||||
calMap[JG03]="\{\n\
|
||||
\{ 0, -5670, -14728, -16999\}, \{ 0, -5942, -14703, -17077\},\n\
|
||||
\{ 0, -5889, -14421, -16670\}, \{ 0, -6039, -14464, -16644\},\n\
|
||||
\{ 0, -5991, -14403, -16390\}, \{ 0, -6103, -14418, -16510\},\n\
|
||||
\{ 0, -5953, -14364, -16180\}, \{ 0, -6154, -14364, -16125\},\n\
|
||||
\{ 0, -5945, -14263, -15929\}, \{ 0, -6075, -14327, -15930\},\n\
|
||||
\{ 0, -5928, -14392, -15878\}, \{ 0, -5986, -14443, -15932\},\n\
|
||||
\{ 0, -5783, -14256, -15873\}, \{ 0, -5945, -14360, -15887\},\n\
|
||||
\{ 0, -5749, -14536, -15874\}, \{ 0, -5733, -14684, -15887\},\n\
|
||||
\{ 0, -5630, -14594, -15987\}, \{ 0, -5752, -14743, -16002\},\n\
|
||||
\{ 0, -5490, -14694, -15993\}, \{ 0, -5481, -14866, -16056\},\n\
|
||||
\{ 0, -5293, -14807, -16060\}, \{ 0, -7935, -20143, -18383\},\n\
|
||||
\{ 0, -7733, -20142, -18482\}, \{ 0, -7628, -20060, -18538\},\n\
|
||||
\{ 0, -7437, -20112, -18495\}, \{ 0, -7314, -20012, -18544\},\n\
|
||||
\{ 0, -7072, -19980, -18573\}, \{ 0, -6986, -20006, -18632\},\n\
|
||||
\{ 0, -6718, -20048, -18569\}, \{ 0, -6601, -19987, -18517\},\n\
|
||||
\{ 0, -6485, -20035, -18537\}, \{ 0, -6292, -20047, -18537\},\n\
|
||||
\{ 0, -6105, -20153, -18482\}, \{ 0, -6081, -20314, -18501\},\n\
|
||||
\{ 0, -5865, -19916, -18164\}, \{ 0, -5786, -20218, -18174\},\n\
|
||||
\{ 0, -5728, -20282, -18110\}, \{ 0, -5690, -20451, -18135\},\n\
|
||||
\{ 0, -5643, -20768, -18154\}, \{ 0, -5603, -20874, -18273\},\n\
|
||||
\{ 0, -5621, -21190, -18095\}, \{ 0, -5522, -21547, -18146\},\n\
|
||||
\{ 0, -5549, -20721, -16825\}, \{ 0, -5547, -21087, -17001\},\n\
|
||||
\{ 0, -5491, -21394, -17040\}, \{ 0, -5484, -21696, -17064\},\n\
|
||||
\{ 0, -5542, -22265, -17091\}, \{ 0, -5483, -22543, -17198\},\n\
|
||||
\{ 0, -5460, -22748, -17254\}, \{ 0, -5417, -22961, -17307\},\n\
|
||||
\{ 0, -5455, -23299, -17323\}, \{ 0, -5445, -23552, -17382\},\n\
|
||||
\{ 0, -5426, -23645, -17428\}, \{ 0, -5480, -23902, -17349\},\n\
|
||||
\{ 0, -5558, -24011, -17360\}, \{ 0, -5569, -24032, -17326\},\n\
|
||||
\{ 0, -5614, -24067, -17305\}, \{ 0, -5656, -24000, -17251\},\n\
|
||||
\{ 0, -5739, -23971, -17228\}, \{ 0, -5777, -23886, -17215\},\n\
|
||||
\{ 0, -5832, -23823, -17051\}, \{ 0, -5891, -23719, -16957\},\n\
|
||||
\{ 0, -6007, -23598, -16925\}, \{ 0, -5893, -20829, -15256\},\n\
|
||||
\{ 0, -5886, -20669, -15091\}, \{ 0, -5883, -20496, -14990\},\n\
|
||||
\{ 0, -5969, -20469, -14898\}, \{ 0, -5971, -20245, -14876\},\n\
|
||||
\{ 0, -5996, -20108, -14764\}, \{ 0, -5979, -19934, -14694\},\n\
|
||||
\{ 0, -5997, -19721, -14571\}, \{ 0, -6046, -19573, -14456\},\n\
|
||||
\{ 0, -6001, -19418, -14381\}, \{ 0, -5942, -19239, -14265\},\n\
|
||||
\{ 0, -5978, -19040, -14240\}, \{ 0, -5928, -18873, -14317\},\n\
|
||||
\{ 0, -5917, -18715, -14238\}, \{ 0, -5865, -18576, -14201\},\n\
|
||||
\{ 0, -5750, -18386, -14200\}, \{ 0, -5772, -18299, -14235\},\n\
|
||||
\{ 0, -5754, -18187, -14300\}, \n\
|
||||
};"
|
||||
|
||||
calMap[JG05]="\{\n\
|
||||
\{ 0, 178, -7222, 8474\}, \{ 0, 218, -7139, 8383\},\n\
|
||||
\{ 0, 215, -7438, 8352\}, \{ 0, 198, -7247, 8498\},\n\
|
||||
\{ 0, 138, -7640, 8644\}, \{ 0, 158, -7805, 8610\},\n\
|
||||
\{ 0, 135, -7804, 8531\}, \{ 0, 143, -7881, 8575\},\n\
|
||||
\{ 0, 165, -8096, 8584\}, \{ 0, 118, -7962, 8558\},\n\
|
||||
\{ 0, 148, -7947, 8550\}, \{ 0, 118, -8193, 8494\},\n\
|
||||
\{ 0, 149, -8042, 8441\}, \{ 0, 59, -8207, 8454\},\n\
|
||||
\{ 0, 101, -8029, 8575\}, \{ 0, 156, -8029, 8422\},\n\
|
||||
\{ 0, 205, -8074, 8451\}, \{ 0, 167, -7912, 8405\},\n\
|
||||
\{ 0, 263, -7980, 8405\}, \{ 0, 258, -8007, 8404\},\n\
|
||||
\{ 0, 288, -7790, 8342\}, \{ 0, -802, -10286, 6559\},\n\
|
||||
\{ 0, -717, -10120, 6574\}, \{ 0, -590, -9884, 6675\},\n\
|
||||
\{ 0, -446, -9651, 6686\}, \{ 0, -371, -9600, 6700\},\n\
|
||||
\{ 0, -259, -9243, 6756\}, \{ 0, -77, -9216, 6768\},\n\
|
||||
\{ 0, 108, -8979, 6844\}, \{ 0, 220, -8769, 6970\},\n\
|
||||
\{ 0, 348, -8820, 6991\}, \{ 0, 569, -8618, 7028\},\n\
|
||||
\{ 0, 688, -8430, 7162\}, \{ 0, 798, -8520, 7293\},\n\
|
||||
\{ 0, 1050, -8141, 7758\}, \{ 0, 1284, -7775, 7850\},\n\
|
||||
\{ 0, 1447, -7625, 7967\}, \{ 0, 1527, -7708, 8032\},\n\
|
||||
\{ 0, 1661, -7547, 8153\}, \{ 0, 1784, -7532, 8169\},\n\
|
||||
\{ 0, 1863, -7560, 8430\}, \{ 0, 1977, -7617, 8609\},\n\
|
||||
\{ 0, 1318, -6902, 8849\}, \{ 0, 1390, -7060, 8848\},\n\
|
||||
\{ 0, 1470, -6967, 8872\}, \{ 0, 1532, -6958, 8915\},\n\
|
||||
\{ 0, 1607, -7162, 8946\}, \{ 0, 1718, -7119, 9030\},\n\
|
||||
\{ 0, 1781, -6970, 9113\}, \{ 0, 1807, -6943, 9071\},\n\
|
||||
\{ 0, 1831, -7114, 9061\}, \{ 0, 1899, -7105, 9088\},\n\
|
||||
\{ 0, 1935, -7026, 9070\}, \{ 0, 2040, -6685, 9125\},\n\
|
||||
\{ 0, -8187, -6757, 9115\}, \{ 0, -10749, -6464, 9194\},\n\
|
||||
\{ 0, -21024, -6513, 9071\}, \{ 0, 6072, -6529, 9040\},\n\
|
||||
\{ 0, -22290, -6590, 9075\}, \{ 0, -12054, -6510, 9114\},\n\
|
||||
\{ 0, -18487, -6491, 9179\}, \{ 0, -12050, -6878, 9144\},\n\
|
||||
\{ 0, -4425, -6526, 9189\}, \{ 0, 2575, -4991, 10202\},\n\
|
||||
\{ 0, 2566, -4792, 10308\}, \{ 0, 2596, -4920, 10513\},\n\
|
||||
\{ 0, 2585, -5106, 10573\}, \{ 0, 2538, -5290, 10578\},\n\
|
||||
\{ 0, 2560, -5424, 10627\}, \{ 0, 2613, -5352, 10915\},\n\
|
||||
\{ 0, 2531, -5578, 10919\}, \{ 0, 2545, -5652, 11012\},\n\
|
||||
\{ 0, 2646, -5819, 11079\}, \{ 0, 2661, -6046, 11136\},\n\
|
||||
\{ 0, 2692, -6314, 11187\}, \{ 0, 2759, -6284, 11209\},\n\
|
||||
\{ 0, 2739, -6557, 11185\}, \{ 0, 2815, -6469, 11256\},\n\
|
||||
\{ 0, 2849, -6807, 11103\}, \{ 0, 2850, -6769, 11097\},\n\
|
||||
\{ 0, 2923, -6999, 11232\}, \n\
|
||||
};"
|
||||
@@ -1,20 +1,16 @@
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* Description: Antenna configuration functions.
|
||||
* @file phy_antenna.h
|
||||
* @author FanHao ([email protected])
|
||||
* @brief Physical layer control antenna configuration functions.
|
||||
* @version 0.0
|
||||
* @date 2023-04-24
|
||||
*
|
||||
* Author: Fan Hao
|
||||
* Date: 2022-06-18 16:37
|
||||
* LastEditors: Fan Hao
|
||||
* LastEditTime: 2022-06-18 17:15
|
||||
* Revisions: Rev 0.0
|
||||
* History:
|
||||
* [2024-01-20]: New branch for duifei.
|
||||
* [2022-06-18]: Initial version.
|
||||
*
|
||||
* Copyright(c) 2022 Beijing Institute of Technology.
|
||||
* Lab of Communication and Networking
|
||||
* @copyright Copyright(c) 2024 Beijing Institute of Technology.\n
|
||||
* Lab of Communication and Network
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* @addtogroup PhysicalLayer
|
||||
* @{
|
||||
@@ -71,62 +67,123 @@
|
||||
|
||||
// Pair by regex
|
||||
// Regex: (([0-9]+, ){8})
|
||||
const uint16_t hopPattern_2KBPS_20MS[L1_FRAME_2KBPS_20MS_HOPS] =
|
||||
const uint16_t freqTable[L1_FRAME_MAX_HOPS] =
|
||||
{
|
||||
1500
|
||||
1084, 1097, 1110, 1123, 1136, 1149, 1162, 1175,
|
||||
1188, 1201, 1214, 1227, 1240, 1253, 1266, 1279,
|
||||
1292, 1305, 1318, 1331, 1344, 1357, 1370, 1383,
|
||||
1396, 1409, 1422, 1435, 1448, 1461, 1474, 1487,
|
||||
1500, 1513, 1526, 1539, 1552, 1565, 1578, 1591,
|
||||
1604, 1617, 1630, 1643, 1656, 1669, 1682, 1695,
|
||||
1708, 1721, 1734, 1747, 1760, 1773, 1786, 1799,
|
||||
1812, 1825, 1838, 1851, 1864, 1877, 1890, 1903,
|
||||
1916, 1929, 1942, 1955, 1968, 1981, 1994, 2007,
|
||||
2020, 2033, 2046, 2059, 2072, 2085, 2098, 2111,
|
||||
2124
|
||||
}
|
||||
|
||||
const uint16_t antCalTable[L1_FRAME_MAX_HOPS][L1_ANT_NUM_CH] =
|
||||
//Antenna-JG01
|
||||
{
|
||||
{ 0, 2525, -7533, -6846}, { 0, 12726, -7818, -6860},
|
||||
{ 0, 2490, -7836, -6907}, { 0, 4479, -7716, -6837},
|
||||
{ 0, 6409, -7770, -6776}, { 0, 14616, -7977, -6816},
|
||||
{ 0, -22557, -8002, -6911}, { 0, -22587, -8121, -6918},
|
||||
{ 0, -1124, -8123, -7030}, { 0, -152, -8219, -7042},
|
||||
{ 0, 1823, -8209, -7130}, { 0, 1790, -8290, -7214},
|
||||
{ 0, 1669, -8362, -7283}, { 0, 1634, -8459, -7276},
|
||||
{ 0, 1615, -8315, -7415}, { 0, 1698, -8168, -7366},
|
||||
{ 0, 1535, -8285, -7520}, { 0, 1619, -8285, -7532},
|
||||
{ 0, 1609, -8201, -7693}, { 0, 1671, -8145, -7769},
|
||||
{ 0, 1676, -8135, -7805}, { 0, 951, -10279, -8871},
|
||||
{ 0, 976, -10235, -8978}, { 0, 1118, -10127, -9019},
|
||||
{ 0, 1175, -10003, -9007}, { 0, 1386, -9847, -9039},
|
||||
{ 0, 1535, -9572, -9058}, { 0, 1729, -9493, -9006},
|
||||
{ 0, -1158, -9312, -9003}, { 0, 23771, -9147, -8928},
|
||||
{ 0, 20733, -9074, -8924}, { 0, 2455, -8841, -8886},
|
||||
{ 0, 2622, -8718, -8735}, { 0, 2791, -8615, -8705},
|
||||
{ 0, 2861, -8168, -8331}, { 0, 3076, -8091, -8218},
|
||||
{ 0, 3257, -8046, -8100}, { 0, 3331, -7923, -8073},
|
||||
{ 0, 3396, -7826, -7994}, { 0, 3478, -7842, -8016},
|
||||
{ 0, 3518, -7846, -7765}, { 0, 3585, -7753, -7715},
|
||||
{ 0, 150, -8145, -8591}, { 0, 192, -8090, -8570},
|
||||
{ 0, 207, -8150, -8597}, { 0, 178, -8142, -8656},
|
||||
{ 0, 89, -8557, -8688}, { 0, 107, -8614, -8733},
|
||||
{ 0, 194, -8605, -8782}, { 0, 153, -8655, -8881},
|
||||
{ 0, 70, -8615, -8952}, { 0, 35, -8596, -9148},
|
||||
{ 0, 49, -8636, -9286}, { 0, 6, -8587, -9435},
|
||||
{ 0, -51, -8540, -9549}, { 0, -65, -8588, -9700},
|
||||
{ 0, -55, -8503, -9820}, { 0, -20, -8414, -9907},
|
||||
{ 0, -112, -8481, -10031}, { 0, -69, -8535, -10185},
|
||||
{ 0, 2, -8550, -10052}, { 0, -1, -8493, -10291},
|
||||
{ 0, -73, -8441, -10380}, { 0, 1958, -6930, -8295},
|
||||
{ 0, -1148, -6939, -8396}, { 0, 1915, -6784, -8370},
|
||||
{ 0, 1871, -6970, -8514}, { 0, 1821, -6974, -8387},
|
||||
{ 0, 1781, -6906, -8431}, { 0, 1736, -6897, -8462},
|
||||
{ 0, 1664, -7024, -8377}, { 0, 1629, -7127, -8436},
|
||||
{ 0, 1603, -7148, -8528}, { 0, 1577, -7198, -8500},
|
||||
{ 0, 1528, -7311, -8512}, { 0, 1577, -7390, -8570},
|
||||
{ 0, 1616, -7436, -8572}, { 0, 1589, -7597, -8590},
|
||||
{ 0, 1722, -7550, -8568}, { 0, 1741, -7691, -8449},
|
||||
{ 0, 1767, -7775, -8328},
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_2KBPS_100MS[L1_FRAME_2KBPS_100MS_HOPS] =
|
||||
const uint8_t hopPattern_2KBPS_20MS[L1_FRAME_2KBPS_20MS_HOPS] =
|
||||
{
|
||||
0, 44, 88, 131, 175, 219, 263, 306,
|
||||
350, 394, 438, 481, 525, 569, 613, 656,
|
||||
700, 744, 788, 831, 875, 919, 963, 1006,
|
||||
1050, 1094, 1138, 1181, 1225, 1269, 1313, 1356,
|
||||
1400, 1444, 1488, 1531, 1575, 1619, 1663, 1706,
|
||||
1750, 1794, 1838, 1881, 1925, 1969, 2013, 2056,
|
||||
2100, 2144, 2188, 2231, 2275, 2319, 2363, 2406,
|
||||
2450, 2494, 2538, 2581, 2625, 2669, 2713, 2756,
|
||||
2800, 2844, 2888, 2931, 2975, 3019, 3063, 3106,
|
||||
3150, 3194, 3238, 3281, 3325, 3369, 3413, 3456,
|
||||
3500
|
||||
0
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_10KBPS_10MS[L1_FRAME_10KBPS_10MS_HOPS] =
|
||||
const uint8_t hopPattern_2KBPS_100MS[L1_FRAME_2KBPS_100MS_HOPS] =
|
||||
{
|
||||
1500
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23,
|
||||
24, 25, 26, 27, 28, 29, 30, 31,
|
||||
32, 33, 34, 35, 36, 37, 38, 39,
|
||||
40, 41, 42, 43, 44, 45, 46, 47,
|
||||
48, 49, 50, 51, 52, 53, 54, 55,
|
||||
56, 57, 58, 59, 60, 61, 62, 63,
|
||||
64, 65, 66, 67, 68, 69, 70, 71,
|
||||
72, 73, 74, 75, 76, 77, 78, 79,
|
||||
80
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_10KBPS_20MS[L1_FRAME_10KBPS_20MS_HOPS] =
|
||||
const uint8_t hopPattern_10KBPS_10MS[L1_FRAME_10KBPS_10MS_HOPS] =
|
||||
{
|
||||
1500, 1500, 1500, 1500, 1500, 1500, 1500, 1500,
|
||||
1500, 1500, 1500
|
||||
0
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_40KBPS_10MS[L1_FRAME_40KBPS_10MS_HOPS] =
|
||||
const uint8_t hopPattern_10KBPS_20MS[L1_FRAME_10KBPS_20MS_HOPS] =
|
||||
{
|
||||
1600, 1650, 1700, 1750, 1800, 1850, 1900, 1550,
|
||||
1500
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_40KBPS_20MS[L1_FRAME_40KBPS_20MS_HOPS] =
|
||||
const uint8_t hopPattern_40KBPS_10MS[L1_FRAME_40KBPS_10MS_HOPS] =
|
||||
{
|
||||
1700, 1800, 1900, 2000, 1700, 1700, 1700, 1700,
|
||||
1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700,
|
||||
1700, 1700, 1700
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8,
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_200KBPS_5MS[L1_FRAME_200KBPS_5MS_HOPS] =
|
||||
const uint8_t hopPattern_40KBPS_20MS[L1_FRAME_40KBPS_20MS_HOPS] =
|
||||
{
|
||||
500, 1600, 1700, 1800, 1900, 2000, 1500, 1600,
|
||||
1700, 1800, 1900, 2000, 1500, 1600, 1700, 1800,
|
||||
1900, 2000, 1500, 1500
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18
|
||||
};
|
||||
|
||||
const uint16_t hopPattern_1M2BPS_5MS[L1_FRAME_1M2BPS_5MS_HOPS] =
|
||||
const uint8_t hopPattern_200KBPS_5MS[L1_FRAME_200KBPS_5MS_HOPS] =
|
||||
{
|
||||
500, 600, 700, 800, 900, 1000, 500, 600,
|
||||
700, 800, 900, 1000, 500, 600, 700, 800,
|
||||
900, 1000, 500, 500
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19
|
||||
};
|
||||
|
||||
const uint8_t hopPattern_1M2BPS_5MS[L1_FRAME_1M2BPS_5MS_HOPS] =
|
||||
{
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19
|
||||
};
|
||||
|
||||
/** @} PhysicalLayer_AntennaConfig_Constants*/
|
||||
@@ -228,7 +285,7 @@ void Phy_AntConfigMode(PHY_INST *instPtr, PHY_ANT_MODE mode)
|
||||
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* @brief Update antenna beam width setting
|
||||
* @brief Update antenna beam table
|
||||
*
|
||||
* @param instPtr pointer to physical layer instance
|
||||
* @param table new beam table
|
||||
@@ -302,7 +359,7 @@ int32_t Phy_SetBeamNo(PHY_INST *instPtr, int32_t beamNo, PHY_ANT_BEAM_WIDTH beam
|
||||
* @param beamWidth new beam width
|
||||
*
|
||||
* @return SUCCESS.
|
||||
* EPARAM - the direction is exceeds predefined range
|
||||
* EPARAM
|
||||
*
|
||||
******************************************************************************/
|
||||
int32_t Phy_SetBeamWidth(PHY_INST *instPtr, PHY_ANT_BEAM_WIDTH beamWidth)
|
||||
|
||||
@@ -72,14 +72,16 @@
|
||||
/** @} PhysicalLayer_Private_Constants*/
|
||||
|
||||
/************************** Variable Definitions *****************************/
|
||||
extern const uint16_t hopPattern_2KBPS_20MS[L1_FRAME_2KBPS_20MS_HOPS];
|
||||
extern const uint16_t hopPattern_2KBPS_100MS[L1_FRAME_2KBPS_100MS_HOPS];
|
||||
extern const uint16_t hopPattern_10KBPS_10MS[L1_FRAME_10KBPS_10MS_HOPS];
|
||||
extern const uint16_t hopPattern_10KBPS_20MS[L1_FRAME_10KBPS_20MS_HOPS];
|
||||
extern const uint16_t hopPattern_40KBPS_10MS[L1_FRAME_40KBPS_10MS_HOPS];
|
||||
extern const uint16_t hopPattern_40KBPS_20MS[L1_FRAME_40KBPS_20MS_HOPS];
|
||||
extern const uint16_t hopPattern_200KBPS_5MS[L1_FRAME_200KBPS_5MS_HOPS];
|
||||
extern const uint16_t hopPattern_1M2BPS_5MS[L1_FRAME_1M2BPS_5MS_HOPS];
|
||||
extern const uint16_t freqTable[L1_FRAME_MAX_HOPS];
|
||||
extern const int16_t antCalTable[L1_FRAME_MAX_HOPS][L1_ANT_NUM_CH];
|
||||
extern const uint8_t hopPattern_2KBPS_20MS[L1_FRAME_2KBPS_20MS_HOPS];
|
||||
extern const uint8_t hopPattern_2KBPS_100MS[L1_FRAME_2KBPS_100MS_HOPS];
|
||||
extern const uint8_t hopPattern_10KBPS_10MS[L1_FRAME_10KBPS_10MS_HOPS];
|
||||
extern const uint8_t hopPattern_10KBPS_20MS[L1_FRAME_10KBPS_20MS_HOPS];
|
||||
extern const uint8_t hopPattern_40KBPS_10MS[L1_FRAME_40KBPS_10MS_HOPS];
|
||||
extern const uint8_t hopPattern_40KBPS_20MS[L1_FRAME_40KBPS_20MS_HOPS];
|
||||
extern const uint8_t hopPattern_200KBPS_5MS[L1_FRAME_200KBPS_5MS_HOPS];
|
||||
extern const uint8_t hopPattern_1M2BPS_5MS[L1_FRAME_1M2BPS_5MS_HOPS];
|
||||
|
||||
/***************** Macros (Inline Functions) Definitions *********************/
|
||||
/************************** Function Prototypes ******************************/
|
||||
@@ -423,7 +425,6 @@ int32_t Phy_Init(PHY_INST **instPtr, PHY_CONFIG *phyConfig)
|
||||
|
||||
memset(&((*instPtr))->tor, PHY_TOR_SUSPEND, sizeof(PHY_RCD));
|
||||
memset(&((*instPtr)->frameType), L1_NONE_FRAME, sizeof(PHY_RCD));
|
||||
memset(&((*instPtr)->antNo), (int32_t)L1_INIT_BEAM_NO, sizeof(PHY_RCD));
|
||||
memset(&((*instPtr)->beamNo), (int32_t)L1_INIT_ANT_NO, sizeof(PHY_RCD));
|
||||
memset(&((*instPtr)->beamWd), (int32_t)L1_INIT_ANT_WD, sizeof(PHY_RCD));
|
||||
memset(&((*instPtr)->hwSate), 0x00, sizeof(HWSTATE));
|
||||
@@ -655,8 +656,8 @@ void Phy_Halt(PHY_INST *instPtr)
|
||||
/**
|
||||
* @brief Set physical layer working mode.
|
||||
*
|
||||
* @param instPtr a pointer to physical instance
|
||||
* @param modeCod intened mode code
|
||||
* @param instPtr physical instance
|
||||
* @param modeCod intend mode code
|
||||
*
|
||||
* @return SUCCESS
|
||||
* other
|
||||
@@ -693,12 +694,12 @@ int32_t Phy_SetMode(PHY_INST *instPtr, PHY_MODE modeCod)
|
||||
/**
|
||||
* @brief Setup a specific timer word register in physical controller.
|
||||
*
|
||||
* @param instPtr
|
||||
* @param tmWord
|
||||
* @param tmType
|
||||
* @param instPtr physical instance
|
||||
* @param tmWord time word
|
||||
* @param tmType time word type
|
||||
*
|
||||
* @return SUCCESS
|
||||
* FAILURE pattern length exceeds maximum length.
|
||||
* FAILURE
|
||||
*
|
||||
******************************************************************************/
|
||||
int32_t Phy_SetTimeWord(PHY_INST *instPtr, const TIME_WORD *tmWord, PHY_TIME_WORD_TYPE tmType)
|
||||
@@ -742,7 +743,7 @@ int32_t Phy_SetupNextSlot(PHY_INST *instPtr, PHY_TOR_TYPE txrxMode,
|
||||
ASSERT(instPtr != NULL);
|
||||
int32_t Status;
|
||||
uint32_t phyModeCtrl, hopNum;
|
||||
const uint16_t *hopPattern;
|
||||
const uint8_t *hopPattern;
|
||||
// Implement a ping-pong flow, offset always is 0 or half of buffer depth.
|
||||
instPtr->antConfigOffset = (L1_ANTCONFIG_MAX_LEN >> 1) - instPtr->antConfigOffset;
|
||||
uint32_t antConfigAddr = instPtr->antConfigAddr + instPtr->antConfigOffset;
|
||||
@@ -821,12 +822,37 @@ int32_t Phy_SetupNextSlot(PHY_INST *instPtr, PHY_TOR_TYPE txrxMode,
|
||||
|
||||
// TODO: Set antenna stand by, when suspend.
|
||||
const uint8_t *dataSrcPtr = (uint8_t *)(&(instPtr->antConfig));
|
||||
size_t hopIdx;
|
||||
uint16_t hopFreq;
|
||||
int16_t hopCal;
|
||||
for (int32_t i = 0; i < hopNum; i++)
|
||||
{
|
||||
instPtr->antConfig.antFreq[0] = (uint8_t)(hopPattern[i] >> 8);
|
||||
instPtr->antConfig.antFreq[1] = (uint8_t)hopPattern[i];
|
||||
instPtr->antConfig.rfFreq[0] = (uint8_t)(hopPattern[i] >> 8);
|
||||
instPtr->antConfig.rfFreq[1] = (uint8_t)hopPattern[i];
|
||||
hopIdx = hopPattern[i];
|
||||
|
||||
// Frequency setting
|
||||
hopFreq = freqTable[hopIdx];
|
||||
instPtr->antConfig.antFreq[0] = (uint8_t)(hopFreq >> 8);
|
||||
instPtr->antConfig.antFreq[1] = (uint8_t)hopFreq;
|
||||
instPtr->antConfig.rfFreq[0] = (uint8_t)(hopFreq >> 8);
|
||||
instPtr->antConfig.rfFreq[1] = (uint8_t)hopFreq;
|
||||
// Calibration setting
|
||||
// -- CH0
|
||||
hopCal = antCalTable[hopIdx][0];
|
||||
instPtr->antConfig.ch0Cal[0] = (uint8_t)(hopCal >> 8);
|
||||
instPtr->antConfig.ch0Cal[1] = (uint8_t)hopCal;
|
||||
// -- CH1
|
||||
hopCal = antCalTable[hopIdx][1];
|
||||
instPtr->antConfig.ch1Cal[0] = (uint8_t)(hopCal >> 8);
|
||||
instPtr->antConfig.ch1Cal[1] = (uint8_t)hopCal;
|
||||
// -- CH2
|
||||
hopCal = antCalTable[hopIdx][2];
|
||||
instPtr->antConfig.ch2Cal[0] = (uint8_t)(hopCal >> 8);
|
||||
instPtr->antConfig.ch2Cal[1] = (uint8_t)hopCal;
|
||||
// -- CH3
|
||||
hopCal = antCalTable[hopIdx][3];
|
||||
instPtr->antConfig.ch3Cal[0] = (uint8_t)(hopCal >> 8);
|
||||
instPtr->antConfig.ch3Cal[1] = (uint8_t)hopCal;
|
||||
|
||||
memcpy((uint8_t *)(antConfigAddr + i * ANT_COINFO_LEN),
|
||||
dataSrcPtr, sizeof(PHY_ANT_CONFIG));
|
||||
}
|
||||
@@ -834,13 +860,6 @@ int32_t Phy_SetupNextSlot(PHY_INST *instPtr, PHY_TOR_TYPE txrxMode,
|
||||
| ((hopNum << ANT_CONFIG_NUM_SHIFT) & ANT_CONFIG_NUM_MASK)
|
||||
| ((ANT_COINFO_LEN << ANT_CONFIG_LEN_SHIFT) & ANT_CONFIG_LEN_MASK);
|
||||
|
||||
/*
|
||||
memcpy((uint8_t*)antConfigDataAddr, hopPattern, hopNum*sizeof(uint16_t));
|
||||
uint32_t antCtrl = (instPtr->antCoinfigOffset & ANT_CONFIG_OFFSET_MASK)
|
||||
| ((hopNum << ANT_CONFIG_NUM_SHIFT) & ANT_CONFIG_NUM_MASK)
|
||||
| ((sizeof(uint16_t) << ANT_CONFIG_LEN_SHIFT) & ANT_CONFIG_LEN_MASK);
|
||||
*/
|
||||
|
||||
// Set antenna configs
|
||||
PhyWrite(instPtr, ANT_CONFIG, antCtrl);
|
||||
|
||||
@@ -862,7 +881,6 @@ int32_t Phy_SetupNextSlot(PHY_INST *instPtr, PHY_TOR_TYPE txrxMode,
|
||||
Phy_RcdShift(&(instPtr->tor), txrxMode);
|
||||
Phy_RcdShift(&(instPtr->frameType), frameType);
|
||||
// TODO:
|
||||
Phy_RcdShift(&(instPtr->antNo), L1_INIT_ANT_NO);
|
||||
Phy_RcdShift(&(instPtr->beamNo), L1_INIT_BEAM_NO);
|
||||
Phy_RcdShift(&(instPtr->beamWd), L1_INIT_ANT_WD);
|
||||
return SUCCESS;
|
||||
@@ -872,7 +890,7 @@ int32_t Phy_SetupNextSlot(PHY_INST *instPtr, PHY_TOR_TYPE txrxMode,
|
||||
/**
|
||||
* @brief Update physical layer status cache.
|
||||
*
|
||||
* @param instPtr A pointer to physical layer control instance.
|
||||
* @param instPtr physical layer control instance.
|
||||
*
|
||||
* @return NONE.
|
||||
*
|
||||
@@ -905,7 +923,8 @@ void Phy_UpdateState(PHY_INST *instPtr)
|
||||
/**
|
||||
* @brief Copy ans store the received data, if received data valid.
|
||||
*
|
||||
* @param instPtr a pointer to physical layer control instance.
|
||||
* @param instPtr to physical layer control instance.
|
||||
* @param dataBuff data buffer.
|
||||
*
|
||||
* @return NONE
|
||||
*
|
||||
@@ -931,7 +950,8 @@ void Phy_PeekRecvData(PHY_INST *instPtr, uint8_t *dataBuff)
|
||||
* @brief Get the received data (if valid), store it to data buffer.
|
||||
* and clear data valid flag.
|
||||
*
|
||||
* @param instPtr a pointer to physical layer control instance.
|
||||
* @param instPtr to physical layer control instance.
|
||||
* @param dataBuff data buffer.
|
||||
*
|
||||
* @return NONE
|
||||
*
|
||||
@@ -995,10 +1015,9 @@ void Phy_UpdateLogging(PHY_INST *instPtr)
|
||||
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* @brief Setup a specific timer word register in physical controller.
|
||||
* @brief Refresh hardware status.
|
||||
*
|
||||
* @param instPtr a pointer to hopping pattern buffer
|
||||
* @param patternLen a integer indicate the length of hopping pattern.
|
||||
*
|
||||
* @return NONE
|
||||
*
|
||||
@@ -1133,6 +1152,8 @@ void Phy_RefreshHwSate(PHY_INST *instPtr)
|
||||
instPtr->hwSate.isAntOk = (instPtr->hwSate.antVolt == (VOLT_ANT_PROC_OK | VOLT_ANT_RF_OK | VOLT_ANT_NIL_OK | ANT_STATE_OK))
|
||||
&& (instPtr->hwSate.antPll == (CLK_ANT_BBPLL_LOCK | CLK_ANT_RFPLL0_LOCK | CLK_ANT_RFPLL1_LOCK));
|
||||
|
||||
instPtr->hwSate.phyId = instPtr.phyCofig.devId;
|
||||
|
||||
memset(instPtr->hwSate.reserve, 0x00, sizeof(instPtr->hwSate.reserve));
|
||||
|
||||
SysMonitor_UpdateHardwareStatus(&(instPtr->hwSate));
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#define L1_NUM_ANT_NRRW_PATTERN 37
|
||||
#define L1_INIT_BEAM_NO 0
|
||||
#define L1_INIT_ANT_WD PHY_ANT_BEAM_120
|
||||
#define L1_INIT_ANT_NO 0
|
||||
#define L1_ANT_NUM_CH 4
|
||||
|
||||
#define L1_FRAME_NONE_LEN UINT32_MAX // byte
|
||||
#define L1_FRAME_NONE_COMP UINT32_MAX // *10ns(Timer_L)
|
||||
@@ -111,6 +111,10 @@ typedef struct
|
||||
uint8_t rfMonitor; ///< Receive monitor, 0-normal, 1-switch to monitor port
|
||||
uint8_t rfReserved0; ///< reserved for further use
|
||||
uint8_t rfReserved1; ///< reserved for further use
|
||||
uint8_t ch0Cal[2];
|
||||
uint8_t ch1Cal[2];
|
||||
uint8_t ch2Cal[2];
|
||||
uint8_t ch3Cal[2];
|
||||
} PHY_ANT_CONFIG;
|
||||
|
||||
/**
|
||||
@@ -229,7 +233,6 @@ typedef struct
|
||||
bool isValid; ///< indicates if last reception frame data valid (crc check pass)
|
||||
TIME_WORD recvSlotTime; ///< last slot start time stamp
|
||||
TIME_WORD recvFsTime; ///< last frame sync time stamp
|
||||
PHY_RCD antNo; ///< antenna number record
|
||||
PHY_RCD beamNo; ///< beam number record
|
||||
PHY_RCD beamWd; ///< beam width record
|
||||
PHY_RCD tor; ///< tx rx state record
|
||||
|
||||
@@ -1,14 +1,38 @@
|
||||
#! /bin/sh
|
||||
|
||||
# GE Software
|
||||
GE_TXATT=0
|
||||
GE_RXATT=25
|
||||
|
||||
DST_DIR=`pwd`
|
||||
PROJECT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
cp -rL $PROJECT_DIR/df_datalink_sp/src $DST_DIR/df_datalink_sp
|
||||
echo "Creating <df_datalink_ge>..."
|
||||
cp -rL $PROJECT_DIR/df_datalink_ge/src $DST_DIR/df_datalink_ge
|
||||
cd $DST_DIR/df_datalink_ge
|
||||
sed -i'' -e "s/antConfig->rfTxMgc = 0;/antConfig->rfTxMgc = $GE_TXATT;/g" ./networking/phy_layer/phy_antenna.c
|
||||
sed -i'' -e "s/antConfig->rcvMgc = 0;/antConfig->rcvMgc = $GE_RXATT;/g" ./networking/phy_layer/phy_antenna.c
|
||||
cd $DST_DIR
|
||||
|
||||
cd $DST_DIR/df_datalink_ge/networking/phy_layer
|
||||
sed -i'' -e "s/antConfig->rfTxMgc = 0;/antConfig->rfTxMgc = $GE_TXATT;/g" ./phy_antenna.c
|
||||
sed -i'' -e "s/antConfig->rcvMgc = 0;/antConfig->rcvMgc = $GE_RXATT;/g" ./phy_antenna.c
|
||||
# SP Software
|
||||
source $PROJECT_DIR/caldata
|
||||
|
||||
for key in ${!calMap[*]};do
|
||||
projName=df_datalink_$key
|
||||
id=$(echo "$key" | grep -o -E '[0-9]+')
|
||||
echo "Creating <$projName>..."
|
||||
cp -rL $PROJECT_DIR/df_datalink_sp/src $DST_DIR/$projName
|
||||
cd $DST_DIR/$projName
|
||||
|
||||
# subtitite ID
|
||||
sed -i'' "s/#define PHY_DEVICE_ID 0/#define PHY_DEVICE_ID $id/g"
|
||||
|
||||
# subtitute table
|
||||
sed -i'' "/^const uint16_t antCalTable\[L1_FRAME_MAX_HOPS\]\[L1_ANT_NUM_CH\] =/{
|
||||
:table
|
||||
N
|
||||
/\};/!b table
|
||||
s/=.*\};/=\n\/\/Antenna-$key\n$calMap[$key]/
|
||||
}" ./networking/phy_layer/phy_antenna.c
|
||||
cd $DST_DIR
|
||||
done
|
||||
Reference in New Issue
Block a user