17.05.2016, 23:37
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Пишем свое API
Вообще редко встречал реально полезного обработчика кодов возврата, вот признайтесь, что вы делаете с BME280_Error дальше? if(BME280_Error), угадал?
|
|
|
|
17.05.2016, 23:43
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Пишем свое API
В данном случае на плате может быть разный набор датчиков. Хост получит свои данные и коды ошибок. Там уже они пойдут в логи. Но в общем если датчик инитиализиуется с ошибкой, что на линии ничего нет, его больше читать не пытаются.
|
|
|
|
18.05.2016, 00:25
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Пишем свое API
Фактически функция инициализации отвечает на уровне хост-протокола или устанавливает глобальные переменные, не используемые в остальных функциях драйвера, так? То есть логический уровень абстракции этой функции выше драйвера. Я бы в таком случае её вообще исключил вместе с её кодами возврата, развернув прямо в месте вызова.
|
|
|
|
18.05.2016, 02:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
|
Re: Пишем свое API
Сообщение от cogen
|
Вообще редко встречал реально полезного обработчика кодов возврата,
|
Да лан , гоните конкретно .
При возникновении ошибки, действия могут быть самыми разными, от просто игнорирования
неопределенного результата, до останова системы и включения аварийной сигнализации.
|
|
|
|
18.05.2016, 02:42
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Пишем свое API
ага, могут быть, иногда. Только обычно разнообразным нештатным ситуациям назначают свой код возврата, в каждом модуле своя простынь с дефайнами или enum, типа на верхнем уровне обработаем ошибку, а по факту при вызове проверяется OK или неокей и по ситуации неокей что-то делается, а что за неокей - неважно.
Ну а раз так обычно происходит, может ну их эти коды возврата? Стараться писать так, чтобы в них не было нужды?
|
|
|
|
18.05.2016, 06:33
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: Пишем свое API
Сообщение от cogen
|
ага, могут быть, иногда. Только обычно
|
А когда "необычно", то переписывать с самого "откуда ноги растут". Или, может, лучше дописать кусочек в нужном месте? Ну, тот самый обработчик? Не затрагивая идеологию?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
18.05.2016, 08:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Пишем свое API
Глядишь - и с Фобосами дело наладится...
|
|
|
|
18.05.2016, 08:56
|
|
Прописка
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
|
Re: Пишем свое API
Не уверен, что вы, Олег (akegor), поняли мою мысль. По сути - делать рефакторинг означает переписывать всё, пользуясь работающим кодом как спецификацией поведения. Делается это с целью упростить обслуживание, обеспечить дальнейшее развитие, повысить надежность, быстродействие, энергосбережение. Достигается это, в частности, путём анализа существующего кода и отбрасывания лишнего. Я утверждаю, что коды ошибок, возвращаемые многими функциями - это лишнее, поскольку они де-факто не анализируются. Я предлагаю оптимизацию путем отказа от возврата функциями кода ошибки и путем выбрасывания функций, общающихся с системой посредством кодов ошибок.
Последний раз редактировалось cogen; 18.05.2016 в 08:58.
|
|
|
|
18.05.2016, 09:26
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Пишем свое API
У меня сделана некая структура подсчета ошибок. В ней есть группы, отвечающие за разные ошибки в разных блоках. Каждая группа содержит переменную типа u16, которая инкременируется с каждым появлением ошибки. Эту структуру получает хост в виде нулевого отчета, когда нет данных для передачи. И она же выводится на SD карту в виде лога. Все довольно топорно, но работает.
И еще я сделал вывод, что I2C мастер надо делать софтварно. Использовать переферию на STM в данном случае смысла никакого нет. Вот такой повод для холивара.
|
|
|
|
18.05.2016, 09:57
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Пишем свое API
Сообщение от Easyrider83
|
И еще я сделал вывод, что I2C мастер надо делать софтварно. Использовать переферию на STM в данном случае смысла никакого нет. Вот такой повод для холивара.
|
"Не прошло и полжизни!"(с).
Об этом говорили ещё со времён расцвета ПИКов. Убогий протокол, какой уж тут может быть холивар?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
свое USB устройство
|
ESWANT |
Микроконтроллеры, АЦП, память и т.д |
2 |
08.09.2009 14:58 |
Часовой пояс GMT +4, время: 06:07.
|
|