Jump to content

    

sigmaN

Свой
  • Content Count

    2605
  • Joined

  • Last visited

Community Reputation

0 Обычный

About sigmaN

  • Rank
    I WANT TO BELIEVE
  • Birthday 05/08/1986

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

7258 profile views
  1. Разобрался. Отвечу сам себе. Если станция принимает фрейм со своим адресом и установленным P/F битом то это команда и P/F бит трактуется как P бит. Если станция принимает фрейм с адресом собеседника и установленным P/F битом то это ответ и P/F бит трактуется как F бит.
  2. В общем, для разнообразия решил реализовать HDLC в ABM режиме. Вооружился первоисточником ISO/IEC 13239:2002(E) С фуркцией P/F бита в других режимах всё ясно. Читаю про ABM... Говорят можно в любое время слать фреймы с F=0. Зачем и в каких ситуациях слать фрейм с P=1 я из этого текста не понял... Ну, мол, придёт вам P=1 ответьте c F=1 побыстрее.... А когда он придёт, когда отправлять... Не понятно. Честно говоря я во всем тексте не нашел этого пока. Тут вроде ситуация проясняется... Если хотим начать чекпоинтинг то засылаем фрейм с P=1, а по ответному фрейму с F=1 понимаем, какие фреймы подтверждаются получателем. Но всё это пока не проясняет вопрос когда же мне отправлять фрейм с P=1? Ответ меня ждал в конце документа. Обе станции начинают обмен с отправки фрейма с P=1. Далее ставят этот бит снова, как только получат ответ с F битом.... Т.е. ставят его по принципу "как можно скорее". Есть одно но: P/F бит это физически один и тот-же бит во фрейме...Он просто имеет семантическое значение P/F в зависимости от контекста(очередности появления в канале, на сколько я понимаю). Как станции различают P это был или F если они обе начинают обмен с отправки фрейма с установленным битом? Вот этого маленького, но важного момента я пока не понял... Кстати на стэковерфлоу тоже не поняли что это было и выдвинули версию, что это дескаать для консистентности с остальными режимами... Но не думаю, что всё так просто. Как минимум ради чекпоинтинга всё-таки стоит почаще отправлять фреймы с P=1 и ловить F=1.
  3. Можете подробнее описать вашу мысль? Как проектируют? Вот вы параметры CRC(не только длину, разумеется) как выбираете? А может быть нужно не только детектировать ошибки, но и восстанавливать(избыточное кодирование). А какие ошибки восстанавливать нужно? Сколько бит избытка будет нормально по вашему? Ну и ещё там по мелочи что-нибудь расскажите немного об этом, если можно. Очень интересно как оно в реальности делается....
  4. Ну я ваш стиль нагнетания ситуации и наведения ужаса уже понял, да. Спасибо )
  5. Начали за здравие, как говорится..... Изначально был вопрос о реализации протоколов, которые уже разработаны и все мат.модели выверены.
  6. Т.е. вы просто потом предлагаете автоматически генерировать С/С++ и радоваться жизни? Спасибо, интересно.
  7. Ноги видимо растут из убежденности в незаменимости голого Си. Дескать все эти классы и абстракции только код раздувают да память жрут.. Ну давайте на чистоту: мне тоже не нравится эта библиотека. Просто потому, что если её притащить в проект, то писать придется уже не на плюсах, а на том домэйн-специфик языке, который эта библиотека предлагает. Но чтиво было интересным. Надо бы аргументировать. Создаётся впечатление, что у вас когнитивное искажение в сторону Си) И компилятор вам не друг, а враг. Я провел достаточно времени за изучением именно этого проекта. Выстрелить в ногу там себе можно 18 разными способами в каждом модуле ) Именно из-за отсутствия возможности сделать нормальные абстракции на Си - авторами пришлось повсеместно использовать препроцессор, мэйджик намберы и т.д. На Си повсеместно приходится изобретать то this pointer то vtable то препроцессором костыли вставлять. Я тоже тогда позволю себе дать вам рекомендацию по исправлению когнитивного искажения.. Когда-ниубдь на досуге попробуйте просто взять тот-же pppd и переписать на плюсах. В качестве первого упражнения предлагаю следующее: Если где-то видите, что в группу функций передаётся некое состояние в виде указателя на одну и ту-же структуру - делайте это классом. Структуру эту в класс, функции делайте членами каласса. Спустя какое-то время вы сможете оценить тот факт, что благодаря this поинтеру это то-же самое(можете в ассемблер заглянуть) только лучше;) Лучше потому, что вы устанавливаете и контролируете инвариант в одном месте. Ограничиваете область видимости до нужной. И так далее... Разделяй и властвуй ;) Так, потихонечку можно будет и до свежих стандартов дойти и лично убедиться, что если на платформу есть компилятор с плюсов, то писать на голом си просто даже нет смысла. Нет причин. Кроме, конечно, самоотверженной веры в универсальность и незаменимость Си. P.S. немного не про эмбеддед конечно, но всё-же https://youtu.be/wbZdZKpUVeg Как вам такое? Тут тоже ни на миллиметр люди не приблизились к заветной мечте? )))
  8. Вот я давича смотрел исходники pppd https://github.com/paulusmack/ppp Что хорошего, светлого и умного можно почерпнуть из них? Такое я и сам накодить могу. ИМХО это стиль девяностых(восьмидесятых??) А чтобы вы лучше поняли мою позицию, я приведу тут чтиво, которое вчера нагуглил и перед сном успел полистать. http://caxapa.ru/thumbs/726398/comms-protocols-cpp.pdf Интересно, познавательно. Возникает желание попробовать, посмотреть, что там за бинарник получается...
  9. Всем привет! Посоветуйте какое-нибудь годное чтиво по реализации разных протоколов(HDLC, PPP, TCP/IP и т.д.) на С/С++. Какие-нибудь лучшие практики, шаблоны... Конечные автоматы как люди делают в таких случаях(eстественно, с упором на встраиваемые системы. Так то про Boost.msm мы слыхали). Правильная организация буферизации интересует в таких случаях, в условиях многопоточности особенно. Я обычно двойную буферизацию: писатель в пишет в один буфер, читатель читает из другого, ну и в критической секции только переключение этих буферов. В целом какое-то у меня ощущение складывается, что каждый раз как в первый раз изобретаю что-то на эту тему, хочется уже умных людей почитать и окончательно понять как правильно.
  10. Помогите скачать https://wenku.baidu.com/view/2f3378c30c22590102029d31.html Я даже нашел логин и пароль тут http://bugmenot.com/view/wenku.baidu.com Но при входе он просит ввести код из смс на номер телефона владельца аккаунта.
  11. Добрый день! Удалось ли найти что-нибудь? Поделитесь? Про фтп слышал, но там пока найдена только одна часть пазла.
  12. https://youtu.be/FJJTYQYB1JQ Годный доклад Александреску 2019 года по поводу сортировки. В том числе рассматриваются реализации std::sort в разных библиотеках. Add: ему удалось превзойти std::sort! Довольно неожиданным способом. В общем, Александреску в очередной рвз не подвёл ))
  13. Не так драматически. Не знаю как это мы видим? )) Лично у меня классическая рекурсивная реализация проигрывает как по скорости, так и по требуемой памяти. И вообще считаю, что если есть требования к скорости и есть возможность что-то реализовать не рекурсивно - нужно реализовывать не рекурсивную версию. Но да ладно, перейдем к делу. Вчера вернулся я к этой задаче. Думал, гадал... туда-сюда код вертел... Ускорения особого добиться не удалось. Сдаюсь, думаю. Пойду смотреть как stable_sort реализован в STL. Входная последовательность разбивается на группы по 32 элемента Каждая такая группа сортируется сортировкой вставкой(insertion sort) После этого начинаются объединения(merge) Так что стало ясно, что алгоритм просто другой. Я "по честному" сливаю всё начиная от групп по 1 элемента, а там всё начинается с групп по 32. Еще потом посмотрю, может мелкомягкие еще какие-то хитрости используют ))
  14. Алгоритм merge sort не корректно сравнивать с quick sort потому как merge - это стабильная сортировка(сортировка, которая не меняет относительный порядок сортируемых элементов, имеющих одинаковые ключи). quick таким свойством не обладает. Ответ на вопрос зачем можно встретить уже в названии топика. Ну и далее я на него неоднократно отвечал.