1. Программа nbdp_table.c

Содержит таблицу соответствия кодов ASCII и кодов формата NBDP.

#include <nbdp.h>

/*B - MARK FREQ:1785Hz

/*Y - SPACE FREQ:1615Hz

/* ¦ +-----------------¦ 5-Unit ¦ 7-Unit ¦ */

/* ¦No ¦LET ¦FIG ¦RUS ¦ Code ¦ Code ¦ */

UCHAR _7bit_code[]= { /*+--+-----+-----+-----+---------+-----------¦ */

0x71 ,/*¦01¦A 41 ¦- 2D ¦А 80 ¦ZZAAA ¦BBBYYYB 71 ¦ */

0x27 ,/*¦02¦B 42 ¦? 3F ¦Б 81 ¦ZAAZZ ¦YBYYBBB 27 ¦ */

0x5c ,/*¦03¦C 43 ¦: 3A ¦Ц 96 ¦AZZZA ¦BYBBBYY 5C ¦ */

0x65 ,/*¦04¦D 44 ¦Wh?? ¦Д 84 ¦ZAAZA ¦BBYYBYB 65 ¦ */

0x35 ,/*¦05¦E 45 ¦3 33 ¦Е 85 ¦ZAAAA ¦YBBYBYB 35 ¦ */

0x6c ,/*¦06¦F 46 ¦Э*9D ¦Ф 94 ¦ZAZZA ¦BBYBBYY 6C ¦ */

0x56 ,/*¦07¦G 47 ¦Ш*98 ¦Г 83 ¦AZAZZ ¦BYBYBBY 56 ¦ */

0x4b ,/*¦08¦H 48 ¦Щ*99 ¦Х 95 ¦AAZAZ ¦BYYBYBB 4B ¦ */

0x59 ,/*¦09¦I 49 ¦8 38 ¦И 88 ¦AZZAA ¦BYBBYYB 59 ¦ */

0x74 ,/*¦10¦J 4A ¦Ю*07 ¦Й 89 ¦ZZAZA ¦BBBYBYY 74 ¦ */

0x3c ,/*¦11¦K 4B ¦( 28 ¦К 8A ¦ZZZZA ¦YBBBBYY 3C ¦ */

0x53 ,/*¦12¦L 4C ¦) 29 ¦Л 8B ¦AZAAZ ¦BYBYYBB 53 ¦ */

0x4e ,/*¦13¦M 4D ¦. 2E ¦М 8C ¦AAZZZ ¦BYYBBBY 4E ¦ */

0x4d ,/*¦14¦N 4E ¦, 2C ¦Н 8D ¦AAZZA ¦BYYBBYB 4D ¦ */

0x47 ,/*¦15¦O 4F ¦9 39 ¦О 8E ¦AAAZZ ¦BYYYBBB 47 ¦ */

0x5a ,/*¦16¦P 50 ¦0 30 ¦П 8F ¦AZZAZ ¦BYBBYBY 5A ¦ */

0x3a ,/*¦17¦Q 51 ¦1 31 ¦Я 9F ¦ZZZAZ ¦YBBBYBY 3A ¦ */

0x55 ,/*¦18¦R 52 ¦4Ч34 ¦Р 90 ¦AZAZA ¦BYBYBYB 55 ¦ */

0x69 ,/*¦19¦S 53 ¦' 27 ¦С 91 ¦ZAZAA ¦BBYBYYB 69 ¦ */

0x17 ,/*¦20¦T 54 ¦5 35 ¦Т 92 ¦AAAAZ ¦YYBYBBB 17 ¦ */

0x39 ,/*¦21¦U 55 ¦7 37 ¦У 93 ¦ZZZAA ¦YBBBYYB 39 ¦ */

0x1e ,/*¦22¦V 56 ¦= 3D ¦Ж 86 ¦AZZZZ ¦YYBBBBY 1E ¦ */

0x72 ,/*¦23¦W 57 ¦2 32 ¦В 82 ¦ZZAAZ ¦BBBYYBY 72 ¦ */

0x2e ,/*¦24¦X 58 ¦/ 2F ¦Ь 9C ¦ZAZZZ ¦YBYBBBY 2E ¦ */

0x6a ,/*¦25¦Y 59 ¦6 36 ¦Ы 9B ¦ZAZAZ ¦BBYBYBY 6A ¦ */

0x63 ,/*¦26¦Z 5A ¦+ 2B ¦З 87 ¦ZAAAZ ¦BBYYYBB 63 ¦ */

0x0f ,/*¦27¦CR 0D -- ----- ¦AAAZA ¦YYYBBBB 0F ¦ */

0x1b ,/*¦28¦LF 0A -- ----- ¦AZAAA ¦YYBBYBB 1B ¦ */

0x2d ,/*¦29¦LET 16 -- ----- ¦ZZZZZ ¦YBYBBYB 2D ¦ */

0x36 ,/*¦30¦FIG 0F -- ----- ¦ZZAZZ ¦YBBYBBY 36 ¦ */

0x1d ,/*¦31¦SP 20 -- ----- ¦AAZAA ¦YYBBBYB 1D ¦ */

0x2b ,/*¦32¦RUS 00 -- ----- ¦AAAAA ¦YBYBYBB 2B ¦ */

/*-------------------------------------------------------------- */

#ifdef RUSSIAN // структура данных под русский алфавит

struct CVT CVT_TABLE[] =

{

/*¦ +-----------------¦ 5-Unit ¦ 7-Unit ¦ */

/*¦ No ¦LET ¦ FIG ¦RUS ¦ Code ¦ Code ¦ */

/*+----+-------+-------+---------+--------------------¦ */

{0x41,0x2D,'a' },/*¦01¦A 41 ¦- 2D ¦А 80 ¦ZZAAA ¦BBBYYYB 71 ¦ */

{0x42,0x3F,'b' },/*¦02¦B 42 ¦? 3F ¦Б 81 ¦ZAAZZ ¦YBYYBBB 27 ¦ */

{0x43,0x3A,'c' },/*¦03¦C 43 ¦: 3A ¦Ц 96 ¦AZZZA ¦BYBBBYY 5C ¦ */

{0x44,0x03,'d' },/*¦04¦D 44 ¦Wh?? ¦Д 84 ¦ZAAZA ¦BBYYBYB 65 ¦ */

{0x45,0x33,'e' },/*¦05¦E 45 ¦3 33 ¦Е 85 ¦ZAAAA ¦YBBYBYB 35 ¦ */

{0x46,'|' ,'f' },/*¦06¦F 46 ¦Э*9D ¦Ф 94 ¦ZAZZA ¦BBYBBYY 6C ¦ */

{0x47,'{' ,'g' },/*¦07¦G 47 ¦Ш*98 ¦Г 83 ¦AZAZZ ¦BYBYBBY 56 ¦ */

{0x48,'}' ,'h' },/*¦08¦H 48 ¦Щ*99 ¦Х 95 ¦AAZAZ ¦BYYBYBB 4B ¦ */

{0x49,0x38,'i' },/*¦09¦I 49 ¦8 38 ¦И 88 ¦AZZAA ¦BYBBYYB 59 ¦ */

{0x4A,'`' ,'j' },/*¦10¦J 4A ¦Ю*07 ¦Й 89 ¦ZZAZA ¦BBBYBYY 74 ¦ */

{0x4B,0x28,'k' },/*¦11¦K 4B ¦( 28 ¦К 8A ¦ZZZZA ¦YBBBBYY 3C ¦ */

{0x4C,0x29,'l' },/*¦12¦L 4C ¦) 29 ¦Л 8B ¦AZAAZ ¦BYBYYBB 53 ¦ */

{0x4D,0x2E,'m' },/*¦13¦M 4D ¦. 2E ¦М 8C ¦AAZZZ ¦BYYBBBY 4E ¦ */

{0x4E,0x2C,'n' },/*¦14¦N 4E ¦, 2C ¦Н 8D ¦AAZZA ¦BYYBBYB 4D ¦ */

{0x4F,0x39,'o' },/*¦15¦O 4F ¦9 39 ¦О 8E ¦AAAZZ ¦BYYYBBB 47 ¦ */

{0x50,0x30,'p' },/*¦16¦P 50 ¦0 30 ¦П 8F ¦AZZAZ ¦BYBBYBY 5A ¦ */

{0x51,0x31,'q' },/*¦17¦Q 51 ¦1 31 ¦Я 9F ¦ZZZAZ ¦YBBBYBY 3A ¦ */

{0x52,0x34,'r' },/*¦18¦R 52 ¦4Ч34 ¦Р 90 ¦AZAZA ¦BYBYBYB 55 ¦ */

{0x53,0x27,'s' },/*¦19¦S 53 ¦' 27 ¦С 91 ¦ZAZAA ¦BBYBYYB 69 ¦ */

{0x54,0x35,'t' },/*¦20¦T 54 ¦5 35 ¦Т 92 ¦AAAAZ ¦YYBYBBB 17 ¦ */

{0x55,0x37,'u' },/*¦21¦U 55 ¦7 37 ¦У 93 ¦ZZZAA ¦YBBBYYB 39 ¦ */

{0x56,0x3D,'v' },/*¦22¦V 56 ¦= 3D ¦Ж 86 ¦AZZZZ ¦YYBBBBY 1E ¦ */

{0x57,0x32,'w' },/*¦23¦W 57 ¦2 32 ¦В 82 ¦ZZAAZ ¦BBBYYBY 72 ¦ */

{0x58,0x2F,'x' },/*¦24¦X 58 ¦/ 2F ¦Ь 9C ¦ZAZZZ ¦YBYBBBY 2E ¦ */

{0x59,0x36,'y' },/*¦25¦Y 59 ¦6 36 ¦Ы 9B ¦ZAZAZ ¦BBYBYBY 6A ¦ */

{0x5A,0x2B,'z' },/*¦26¦Z 5A ¦+ 2B ¦З 87 ¦ZAAAZ ¦BBYYYBB 63 ¦ */

{0x0D,0x0D,0x0D},/*¦27¦CR 0D -- ----- ¦AAAZA ¦YYYBBBB 0F ¦ */

{0x0A,0x0A,0x0A},/*¦28¦LF 0A -- ----- ¦AZAAA ¦YYBBYBB 1B ¦ */

{0x01,0x01,0x01},/*¦29¦LET 16 -- ----- ¦ZZZZZ ¦YBYBBYB 2D ¦ */

{0x02,0x02,0x02},/*¦30¦FIG 0F -- ----- ¦ZZAZZ ¦YBBYBBY 36 ¦ */

{0x20,0x20,0x20},/*¦31¦SP 20 -- ----- ¦AAZAA ¦YYBBBYB 1D ¦ */

{0x03,0x03,0x03},/*¦32¦RUS 00 -- ----- ¦AAAAA ¦YBYBYBB 2B ¦ */

2. Программа nbdp.c

Содержит функции для работы с протоколом NBDP, а также объявление всех глобальных переменных используемых в обмене данными по протоколу NBDP.

#include <nbdp.h>

#include <drivers.h>

#include <string.h>

#include <ctype.h>

#include <template.h>

/*-------------------------------------------------------------*/

UINT No; /* Channel No */

UCHAR COMF; /* COMMUNICATION FLAG */

/* b0 : 0=stanby 1=communication */

/* b1 : 1=ARQ Mode */

/* b2 : 1=CFEC Mode */

/* b3 : 1=SFEC Mode */

/* b4 : 1=GFEC Mode */

/* b5 : 0=send 1=recv */

/* b6 : 1 = SLAVE wait PHASING, 0 = SLAVE PHASED */

/* b7 : */

UCHAR STATE; /* COMMUNICATION STATE */

UCHAR LAST_STATE;

/* FEC ARQ */

/* 0 stand-by stand-by */

/* 1 set receive mode send before process */

/* 2 syncro signal rx receive before process */

/* 3 FEC msg rcv 7id-phasing-master */

/* 4 Synchronous signal send 7id-rephasing-master */

/* 5 ID send 4id-phasing-master */

/* 6 FEC msg send 4id-rephasing-master */

/* 7 stop signal send 7id-phasing-slave */

/* 8 7id-rephasing-slave */

/* 9 4id-phasing-slave */

/* 10 4id-rephasing-slave */

/* 11 iss */

/* 12 irs */

UCHAR arqf; /* ARQ flag */

/* b0 : 0 = slave, 1=master */

/* b1 : 1 = WRU */

/* b2 : 1 = OVER FLAG */

/* b3 : */

/* b4 : */

UCHAR SelfTest;

UCHAR FirstIdleBlock;

UCHAR SendFCCInfo;

UCHAR IDLEAcnt; /* IDLE ALFA counter for FEC */

UINT RxErr,RxOK; /* Received Err and OK symbol */

UCHAR SHIFT; /* LET=0,FIG=1,RUS=2 */

/*UCHAR PTT;*/ /* -BK intenal bit */

UCHAR WRU_SUPPORT=1;

UCHAR DX[5]; /* INPUT DX LINE FOR FEC */

UCHAR RX[5]; /* INPUT RX LINE FOR FEC */

UCHAR ID_IN[7]; /* INPUT SFEC ID SHIFT REG */

UCHAR SFSIS4[4]; /* SFEC self identification signal for 4-digit ID */

UCHAR SFSIS5[4]; /* SFEC self identification signal for 5-digit ID */

UCHAR SFSIS9[7]; /* SFEC self identification signal for 9-digit ID */

UCHAR SCID[7]; /* SFEC called station ID */

UINT n[10]; /* ARQ(and other) supervisor counters */

UCHAR connector;

UCHAR CB[3][3]; /* CALLING BLOCK DURING SLAVE PHASING */

/* AND FOR CALL DURING ARQ MASTER */

UCHAR CIB[3][3]; /* CALLER ID BLOCK FOR 7-digit SLAVE SYNC */

UCHAR CCS[3]; /* CS DURING ARQ MASTER CALL */

/* AND DURING SLAVE PHASING */

UCHAR CKERR; /* CK errors during phasing */

/*UCHAR RCB[3][3];*/ /* REPHASING: CALLING BLOCK DURING SLAVE REPHASING */

UCHAR RDATA[3]; /* RECEIVE DATA BLOCK */

UCHAR SLICE_BUF[2];

UCHAR LAST_CS;

UCHAR LAST_BLOCK[3];/* last sended block */

UCHAR LAST_BL_NO;

UCHAR LAST_ID[10]; /* last comm try ID */

UCHAR RQ; /* REPEAT REQUEST */

UCHAR RPTF; /* REPEAT FLAG */

UCHAR ID_TYPE; /* 4- or 7-DIGIT ID TYPE. 0-4,1-7 */

UCHAR WRU_CNT; /* MULTIPLE WRU REQUST COUNT */

UCHAR strAAB[21]; /* not converted AAB */

UCHAR AAB[AAB_LEN];/* converted AAB */

UCHAR SIS4[6]; /* self id signal for 4-digit ID */

UCHAR SIS5[6]; /* self id signal for 5-digit ID */

UCHAR SIS9[9]; /* self id signal for 9-digit ID */

UCHAR SCS9[3]; /* self id check sum for 9-digit ID */

char o_shift=4; /* output shift */

char RQ3SIG [3] = "\x33\x33\x33"; /* rq-rq-rq */

char B_A_B [3] = "\x66\x78\x66"; /* b-a-b */

char EOC_SIG[3] = "\x78\x78\x78"; /* a-a-a */

/*UCHAR PRE_KEY; */ /* PRE KEY IN MS (0..100) */

/*UCHAR POST_KEY;*/ /* POST KEY IN MS (0..100) */

UCHAR CFEC_RX=1; /* CFEC RECEIVING ON/OFF, default ON */

UCHAR FEC_RATE=50; /* FEC ERROR RATE, default 50% */

UCHAR IN_CHNL =2; /* INPUT CHANNEL L/R, default RIGHT */

UCHAR OUT_CHNL=1; /* OUTPUT CHANNEL L/R, default LEFT */

UCHAR LAST_RX_CS = 0;

UCHAR LAST_RX_BLOCK = 0;

UCHAR after_rephase = 0;

extern int SlaveAnswerTime; /* Called mode answer delay */

/*-------------------------------------------------------------*/

void StandBy(void) // В алгоритме вызывается при ошибке

{

MODEM_STATE=5; /* state = 5 - RESET */

COMF = STATE = SHIFT = RxErr = RxOK = /*RQ = RPTF = */ 0;

LAST_STATE = 0;

IDLEAcnt = 0;

connector = 0;

/*memset(DX,0,5);memset(RX,0,5);*/

FirstIdleBlock = 0;

SendFCCInfo = 0;

arqf = 0;

LAST_CS = 0;

o_shift = 4; /* output shift not defined */

WRU_SUPPORT=1; /* Set default as ON */

hiClear();

hoClear();

Clear();

doClear();

if(dip_sw & DIP_SW3)

{

if(SlaveAnswerTime != (21+2))

{

SlaveAnswerTime = 21+2; /* Called mode answer delay 20 ms */

goto inform_host;

}

}

else

{

if(SlaveAnswerTime != (21+5))

{

SlaveAnswerTime = 21+5; /* Called mode answer delay 50 ms */

inform_host:

SendCommandHostDBG(1,"CHANGE SLAVE ANSWER TIME [%X0 msec]",SlaveAnswerTime-21);

}

}

send_stat();

/*FS[0] = 1;*/ /* restart FREE SIGNAL */

SendCommandHostDBG(1,"STAND BY");

}

/*-------------------------------------------------------------*/

void send_stat(void) /* Послать статус устройства в host-компьютер */

{

/*

SendCommandHost("STAT","%02X;%02X;%02X;%03X;%02X;%02X",

COMF,STATE,arqf,hiIFree,hi_count,connector);

*/

SendCommandHost("STAT","%02X;%02X;%02X;%03X;%02X;%X;%X",

COMF,STATE,arqf,hiIFree,hi_count,MODEM_STATE,connector);

}

/*-------------------------------------------------------------*/

/*-------------------------------------------------------------*/

/* Mode */

/* 0 - ARQ */

/* 1 - CFEC */

/* 2 - SFEC */

/*-------------------------------------------------------------*/

UCHAR convert(char ch) // Конвертер в NBDP

{

if(ch == ERR_SMBL) return ERR_SMBL;

{

int index = table2[(int) ch];

if(index)

{

struct CVT *cvt;

cvt = &CVT_TABLE[index-1];

switch(SHIFT)

{

case 0: return cvt->_LET;

case 1: return cvt->_FIG;

case 2: return cvt->_RUS;

}

}

}

return ERR_SMBL;

}

/*-------------------------------------------------------------*/

void NBDP_Init(void) // Инициализация NBDP (вызывается из main.c)

{

SetID(1,"32610",SIS5,NULL,1);

SetID(2,"123456789",SIS9,SCS9,1);

strcpy(SIS9,"\x2e\x33\x65\x33\x27\x39\x2e\x71\x69");

strcpy(SCS9,"\x17\x4e\x69");

/*-------------------------------------------------------------*/

StandBy();

}


Информация о работе «Проектирование устройства передачи данных по радиоканалу»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 109396
Количество таблиц: 14
Количество изображений: 31

Похожие работы

Скачать
134036
26
14

... части локальной сети не позволяют останавливаться на известных достигнутых результатах и побуждают на дальнейшее исследование в дипломной работе в направлении разработки локальной сети с беспроводным доступом к ее информационным ресурсам, используя перспективные технологии защиты информации. 2. Выбор оборудования, для перспективных технологий СПД   2.1 Выбор передающей среды Зачастую перед ...

Скачать
20961
1
9

... телекоммуникаций может потребоваться не одна смена стандарта связи без смены комплекта приемо-передающей аппаратуры. Все это возможно в более сложных цифровых радиопередающих устройствах, построенных на основе специализированных цифровых процессоров передатчиков (TSP), которые будут рассмотрены в следующей главе. 2. Цифровые синтезаторы частоты с косвенным синтезом (ФАПЧ) Современные ...

Скачать
29687
1
5

... сети также входит в физический уровень. Независимо от того, является ли сеть кольцевой сетью с маркерным доступом, звездоподобной сетью, или имеет гибридную конфигурацию, решение о топологии сети принимается с учетом физического уровня. В физический уровень также входит конфигурация кластеров высокой готовности. По большому счету нужно помнить о том, что если физические устройства не знают о ...

Скачать
102741
6
12

... на будущее. DAO и RDO известны уже достаточно давно, и появление двух разных механизмов было связано с необходимостью оптимизации решения двух отдельных задач: доступа к локальным и удаленным базам данных соответственно. Однако естественное развитие вычислительных систем привело к необходимости создания единого механизма, который обеспечил бы единый подход при работе с БД различных классов. В ...

0 комментариев


Наверх