Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Пишем свое API

Непрочитано 17.05.2016, 23:37  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: Пишем свое API

Вообще редко встречал реально полезного обработчика кодов возврата, вот признайтесь, что вы делаете с BME280_Error дальше? if(BME280_Error), угадал?
Реклама:
cogen вне форума  
Непрочитано 17.05.2016, 23:43  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

В данном случае на плате может быть разный набор датчиков. Хост получит свои данные и коды ошибок. Там уже они пойдут в логи. Но в общем если датчик инитиализиуется с ошибкой, что на линии ничего нет, его больше читать не пытаются.
Easyrider83 вне форума  
Непрочитано 18.05.2016, 00:25  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: Пишем свое API

Фактически функция инициализации отвечает на уровне хост-протокола или устанавливает глобальные переменные, не используемые в остальных функциях драйвера, так? То есть логический уровень абстракции этой функции выше драйвера. Я бы в таком случае её вообще исключил вместе с её кодами возврата, развернув прямо в месте вызова.
cogen вне форума  
Непрочитано 18.05.2016, 02:03  
Ar-Gen-Tum
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
Ar-Gen-Tum на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от cogen Посмотреть сообщение
Вообще редко встречал реально полезного обработчика кодов возврата,
Да лан , гоните конкретно .
При возникновении ошибки, действия могут быть самыми разными, от просто игнорирования
неопределенного результата, до останова системы и включения аварийной сигнализации.
Ar-Gen-Tum вне форума  
Непрочитано 18.05.2016, 02:42  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: Пишем свое API

ага, могут быть, иногда. Только обычно разнообразным нештатным ситуациям назначают свой код возврата, в каждом модуле своя простынь с дефайнами или enum, типа на верхнем уровне обработаем ошибку, а по факту при вызове проверяется OK или неокей и по ситуации неокей что-то делается, а что за неокей - неважно.
Ну а раз так обычно происходит, может ну их эти коды возврата? Стараться писать так, чтобы в них не было нужды?
cogen вне форума  
Непрочитано 18.05.2016, 06:33  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от cogen Посмотреть сообщение
ага, могут быть, иногда. Только обычно
А когда "необычно", то переписывать с самого "откуда ноги растут". Или, может, лучше дописать кусочек в нужном месте? Ну, тот самый обработчик? Не затрагивая идеологию?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 18.05.2016, 08:48  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Пишем свое API

Глядишь - и с Фобосами дело наладится...
omercury вне форума  
Непрочитано 18.05.2016, 08:56  
cogen
Прописка
 
Регистрация: 25.04.2010
Сообщений: 24
Сказал спасибо: 9
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
cogen на пути к лучшему
По умолчанию Re: Пишем свое API

Не уверен, что вы, Олег (akegor), поняли мою мысль. По сути - делать рефакторинг означает переписывать всё, пользуясь работающим кодом как спецификацией поведения. Делается это с целью упростить обслуживание, обеспечить дальнейшее развитие, повысить надежность, быстродействие, энергосбережение. Достигается это, в частности, путём анализа существующего кода и отбрасывания лишнего. Я утверждаю, что коды ошибок, возвращаемые многими функциями - это лишнее, поскольку они де-факто не анализируются. Я предлагаю оптимизацию путем отказа от возврата функциями кода ошибки и путем выбрасывания функций, общающихся с системой посредством кодов ошибок.

Последний раз редактировалось cogen; 18.05.2016 в 08:58.
cogen вне форума  
Непрочитано 18.05.2016, 09:26  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Пишем свое API

У меня сделана некая структура подсчета ошибок. В ней есть группы, отвечающие за разные ошибки в разных блоках. Каждая группа содержит переменную типа u16, которая инкременируется с каждым появлением ошибки. Эту структуру получает хост в виде нулевого отчета, когда нет данных для передачи. И она же выводится на SD карту в виде лога. Все довольно топорно, но работает.
И еще я сделал вывод, что I2C мастер надо делать софтварно. Использовать переферию на STM в данном случае смысла никакого нет. Вот такой повод для холивара.
Easyrider83 вне форума  
Непрочитано 18.05.2016, 09:57  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Пишем свое API

Сообщение от Easyrider83 Посмотреть сообщение
И еще я сделал вывод, что I2C мастер надо делать софтварно. Использовать переферию на STM в данном случае смысла никакого нет. Вот такой повод для холивара.
"Не прошло и полжизни!"(с).
Об этом говорили ещё со времён расцвета ПИКов. Убогий протокол, какой уж тут может быть холивар?
STM32F0 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
свое USB устройство ESWANT Микроконтроллеры, АЦП, память и т.д 2 08.09.2009 14:58


Часовой пояс GMT +4, время: 01:33.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.