реклама на сайте
подробности

 
 
> ppp на Siemens MC35i, помогите с CRC алгоритмом
lolful
сообщение Aug 13 2008, 12:00
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 106
Регистрация: 27-11-07
Из: Пермь
Пользователь №: 32 732



Пытаюсь реализовать TCP/IP/PPP через GPRS на модеме Siemens MC35i. Сразу же наткнулся на проблему. Не могу сосчитать контрольную сумму кадра PPP. Где-то нашел вот это:
Цитата
Name : "X-25"
Width : 16
Poly : 1021
Init : FFFF
RefIn : True
RefOut : True
XorOut : FFFF
Check : 906E
(здесь я не догоняю что есть RefIn, RefOut и Check)
Прогоняю через функцию...
Код
unsigned short Crc16(unsigned char *pcBlock, unsigned short len)
{
    unsigned short crc = 0xFFFF;
    unsigned char i;

    while (len--)
    {
        crc ^= *pcBlock++ << 8;

        for (i = 0; i < 8; i++)
            crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
    }

    return crc ^ 0xFFFF;
}
...следующий пакет...
Цитата
FF03C021010300190206000A0000070208020506BC62123F0305C22305
...у которого CRC должен быть EEF1, но я получаю E3E2.

О, гуру L2P, подскажите где я на грабли наступаю.

П.С. Забить на пипипи и взять "нормальный" модем с уже реализованным стеком TCP/IP не предлагать.

Сообщение отредактировал lolful - Aug 13 2008, 12:01
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Beginning
сообщение Oct 2 2008, 11:04
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 511
Регистрация: 24-08-07
Из: БРЕСТ
Пользователь №: 30 053



Сделал зеркалирование:

uint8 mas[29]={0xFF,0x03,0xC0,0x21,0x01,0x03,0x00,0x19,0x02,0x06,0x00,0x0A,0x00,0x00,0
x07,0x02,0x08,0x02,0x05,0x06,0xBC,0x62,0x12,0x3F,0x03,0x05,0xC2,0x23,0x05};
uint8 mas_bit[8]={1,2,4,8,16,32,64,128};
uint8 ch0,ch1;
CRC=0xFFFF;
for(x=0;x<29;x++)
{
ch0=mas[x];
ch1=0;
for(z=0;z<8;z++) if(ch0 & mas_bit[z]) ch1|=mas_bit[7-z];
CRC=crc16_o(mas[ch1],CRC);
}

CRC1: 5C07
CRC1^: A3F8

Т.е. не равно EEF1.
Я не совсем понимаю смысл фразы:
Цитата
Затем эти данные прогоняются через функцию CRC, результат зеркалируется

Конкретно: результат зеркалируется. Т.е. мы берём байт, зеркалируем его, прогоняем через CRC. Полученую CRC зеркалируем (2 байта), потом опять туже процедуру? Я так делал, CRC не совпадает. smile3046.gif


--------------------
Если хочешь вбить гвоздь, не ищи обходных путей, просто бери молоток и бей по этому чёртовому гвоздю!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- lolful   ppp на Siemens MC35i   Aug 13 2008, 12:00
- - lolful   Вот что еще добавлю. Я подключаюсь к gprs (atd*98...   Aug 14 2008, 04:15
- - lolful   Так. Кажется разобрался. RefIn и RefOut означают,...   Aug 14 2008, 06:00
- - vesago   Посмотрите в этой теме документец. Там доходчиво п...   Aug 16 2008, 19:01
- - lolful   Насчет ppp мне было все понятно. Вопрос был задан ...   Aug 19 2008, 08:46
- - lolful   Итак, по PPP удалось подключиться. Удается посылат...   Aug 26 2008, 08:00
|- - akoyur   Цитата(lolful @ Aug 26 2008, 11:00) Итак,...   Jan 17 2011, 14:33
|- - follow_me   Цитата(akoyur @ Jan 17 2011, 16:33) Так ч...   Jan 17 2011, 16:18
|- - muchacho   Цитата(follow_me @ Jan 17 2011, 19:18) .....   Jan 20 2011, 08:11
- - Beginning   БЛИН!!!! Я УЖЕ СУМА СХОЖУ!...   Oct 2 2008, 09:05
|- - Сергей Борщ   Цитата(Beginning @ Oct 2 2008, 12:05) mas...   Oct 2 2008, 09:17
- - Beginning   Спасибо, попробую именно зерколирование октетов.   Oct 2 2008, 09:25
|- - Сергей Борщ   Используйте теги обрамления кода (кнопочка # в фор...   Oct 2 2008, 11:49
- - Beginning   Цитатаmas[ch1] Да... надо на отдых. За рабочий ис...   Oct 2 2008, 12:24


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.02312 секунд с 7
ELECTRONIX ©2004-2016