Неприкрытым Отцам программинга.....за советом....

ivirkrip

Посоветуйте с какой книжки начинать , чтобы заботать ЭТО
sss++;
return 1; //arp
}
// if (c == 0x0800) //ip?
if (c == 0x0008) //ip?
{ //ip
//c = rx_buf[11] & 0x00FF;
c = rx_buf[11] & 0xff00;
// if c == 0x0011) && (LOCALPORT == (rx_buf[18]&0x0000ffff
if (
rx_buf[15]&0x0000ffff)==localmachine.localip[0]) &&
rx_buf[16]&0x0000ffff)==localmachine.localip[1]) &&
(c == 0x1100) &&
(LOCALPORT_R == (rx_buf[18]&0x0000ffff
) {
sss1++;
RemoteIA[0]=rx_buf[3]&0x0000ffff;
RemoteIA[1]=rx_buf[4]&0x0000ffff;
RemoteIA[2]=rx_buf[5]&0x0000ffff;
RemoteLocalPort=rx_buf[17]&0x0000ffff;
RemoteIP[0]=rx_buf[13]&0x0000ffff;
RemoteIP[1]=rx_buf[14]&0x0000ffff;
return 2; //udp
}
//if (c == 0x0001) //icmp?
if (c == 0x0100) //icmp?
tx_buf[0] = rx_buf[3] & 0x0000ffff; //dest
tx_buf[1] = rx_buf[4] & 0x0000ffff;
tx_buf[2] = rx_buf[5] & 0x0000ffff;
tx_buf[3] = localmachine.localHW[0] & 0x0000ffff; //src
tx_buf[4] = localmachine.localHW[1] & 0x0000ffff;
tx_buf[5] = localmachine.localHW[2] & 0x0000ffff;
// tx_buf[6] = 0x0806; //arp
tx_buf[6] = 0x0608; //arp
// tx_buf[7] = 0x0001; //ethernet
tx_buf[7] = 0x0100; //ethernet
// tx_buf[8] = 0x0800; //ip
tx_buf[8] = 0x0008; //ip
// tx_buf[9] = 0x0604; //mac - 6, ip - 4
tx_buf[9] = 0x0406; //mac - 6, ip - 4
// tx_buf[10]= 0x0002; //reply
sum = 0;
for (i = 0; i < 10; i++)
{
sum += tx_frame[i+7];
}
// sss = sum;
sum = (sum & 0xFFFF) + (sum >> 16);
sum = ~sum;
tx_frame[12] = sum;
cs8900_poll_send(&tx_frame[0], 28+14 + len);
А также
SWAP_BYTES_LO(r0,r1); // swap bytes
r0=PP_IA;
WRITE_PP_REGISTER(r0,r1); // write to CS8900a
r1=dm(_localmachine+localHW1); // get middle-short-word of MAC
// SWAP_BYTES_LO(r0,r1); // swap bytes
r0=PP_IA+2;
WRITE_PP_REGISTER(r0,r1); // write to CS8900a
r1=dm(_localmachine+localHW2); // get lo-short-word of MAC
// SWAP_BYTES_LO(r0,r1); // swap bytes
r0=PP_IA+4;
WRITE_PP_REGISTER(r0,r1); // write to CS8900a
r0=PP_RxCTL;
r1=PP_RxCTL_RxOK | PP_RxCTL_IA | PP_RxCTL_Broadcast | PP_RxCTL_Multicast; //| PP_RxCTL_RUNT; //
// r1=PP_RxCTL_Promiscuous|PP_RxCTL_RxOK;
WRITE_PP_REGISTER(r0,r1); // set RxCTL of CS8900a
r0=PP_LineCTL;
r1=PP_LineCTL_Rx | PP_LineCTL_Tx;
Буду рад любым советам....

bleyman

Спецификация того стека протоколов, про который речь в проге.
Кстати, довольно хорошо написанная прога. Даже с комментариями.
А зачем тебе?

psm-home

Я не отец, конечно, но свои два цента вставлю... Во первых, странный способ просить совета, привёл куски сырцов и ничего больше. Попробую угадать. Наверное это программа на C для микроконтроллера. Из каментов также легко видеть, что устройство имеет ethernet интерфейс на чипе CirrusLogic CS8900a. Не совсем понятно, правда, какой смысл ты вкладывал в фразу "заботать ЭТО". Предположим, что С ты не знаешь. Тогда начни с изучения С вообще, возьми стандарт (сцылка на него есть в FAQ раздела возьми Кернигана и Ричи "Язык С". Узнай, какое подмножество С поддерживает компилятор, для которого это фсё пишется. Ещё, наверное, понадобится информация по чипу CS8900. Она есть на web page . Ещё стоит узнать про внутреннее устройство сетевых протоколов, которые используются. З. Ы. Если я ошибся со своими предположениями и ты всё это знаешь и тебе нужно было совсем другое, то извини.

bleyman

Может просто это такой йумор? Типа, чувак увидел совершенно непонятный ему кусок проги, и решил, что это хороший пример того, какие непонятные проги на С бывают...

Anturag

А ты знаешь как комп работает? Ну типа регистры там всякие? Что такое swap bytes? По-моему, кроме документации к девайсу ничего и не нужно, чтобы сесть и понять, что там написано...

bleyman

Не. Ну еще надо знать синтаксис С (вроде как там чистый С).

sergey_m

Найти автора и заставить его заботать два пункта:
1) Пользоваться константами.
2) Комментарии использовать для комментирования, а не хз для чего.
P.S. <moderator mode=on> Сабж треда напрашивается на предупреждение. Правильный сабж: "помогите понять программу"

Marinavo_0507

> Найти автора и заставить его заботать два пункта:
Учить использовать htons и т.п. думаешь уже бесполезно?

bleyman

Хм.
А по-моему, вполне клевый код.
0x0000ffff объявлять константой плохо, потому что уменьшает читабельность.
А рядом со всеми остальными масками в комментарии написано, что это за маска.
Выглядит он страшно потому что отступов и расцветки нет.
Глупо ожидать, что код программирующий сетевой интерфейс на низком уровне вдруг будет понятным без описания этого интерфейса =)

Ivan8209

(Прочитал код.)
Его, по-моему, вообще бесполезно учить.
Разве что сильно ударить по голове и заново.
---
"Лень --- движитель прогресса."

sergey_m

> 0x0000ffff объявлять константой плохо, потому что уменьшает читабельность.
Даже не знаю как возразить... Наверное ты не такой как все, если для тебя уменьшает читабельность.
> А рядом со всеми остальными масками в комментарии написано, что это за маска.
Супер. Комментарии для этого и придумывались.
> Глупо ожидать, что код программирующий сетевой интерфейс на низком уровне вдруг будет понятным без описания этого интерфейса =)
Нет. Код должен быть понятным для чтения без описания интерфейса. Описание интерфейса тебе может быть нужно для того что бы понять почему делается именно так, или для того что бы редактировать код. А для того, что бы код читать или же понять для чего так делается тебе не должно быть нужно описание.
Взгляни например на драйвер Ethernet карты 3Com в FreeBSD, на какую нибудь сугубо-специфичную фукнцию типа xl_choose_media.

bleyman

Короче.
Я его копи-пейстнул в вижуальник.
Если потереть комментнутые строчки (где чувак с МСБ/ЛСБ глючил, по ходу) то получиццо совершенно нормальный код.

Ффсё, забейте.
Я совершенно забыл, что Ваше мнение по вопросам стиля меня не интересует =)

maggi14

имхо понятный нормальный код

milochka11

В ФЖевском исполнение воопще ништяк получилось,мне кажется

laki

блин кто сомневается, что фж отец. код читабелен и еще как.

ivirkrip

немного кнкрнтизирую вопрос...
У кого есть нормальные читабельные справочники где описывают параметры всяких функций Visual DSP++ 3.5 .. желательно на русском....
А также какие-нибудь документы, где поэтапно описан процесс написания прог для процов cthbb 2185.....
Заранее спасибо..
Оставить комментарий
Имя или ник:
Комментарий: