Size: a a a

2020 September 20

VK

Valentin Kornienko in Embedded Group
В стандарте есть optional
источник

L

LexsZero in Embedded Group
Valentin Kornienko
В стандарте есть optional
а конструктора который возвращает не объект, а Either<T, Error> все еще нет :P
источник

L

LexsZero in Embedded Group
Valentin Kornienko
В стандарте есть optional
с него мало толку пока он не используется повсеместно. а мешать разные подходы к хендлингу ошибок в одном коде - ну такое.
источник

VK

Valentin Kornienko in Embedded Group
LexsZero
а конструктора который возвращает не объект, а Either<T, Error> все еще нет :P
Да. Он бы не помешал.
источник

VK

Valentin Kornienko in Embedded Group
С исключением есть проблема. Когда его ловить?
источник

L

LexsZero in Embedded Group
когда оно может возникнуть?
источник

TB

Taras Bezditnyi in Embedded Group
Ком 123
И ещё такой совет, совсем забыл: любая прошивка должна работать без делеев. Вообще. От слова совсем. osDelay используется только для переключения контекста либо для разгрузки процессора. Все ожидания отклика/отработки периферии/получения данных и т.д. разруливаются флагами и примитивами синхронизации, иначе ищи косяки в алгоритме работы и смотри, где не отслеживаешь получение сигнала об отработке куска кода/периферии. А к искусственным делеям должно быть отношение как к goto: если ты не можешь разрулить всё без них - ты что-то делаешь неправильно.
+100500 - это то что меня тормознуло на дебаггинг на сутки. Спасибо за наводки, буду читать ещё) нет ничего идеального, есть нехватка знаний и опыта)
источник

VK

Valentin Kornienko in Embedded Group
LexsZero
когда оно может возникнуть?
>пользовательский код кинул
>Код стандартной библиотеки
>Код 3rd party
источник

L

LexsZero in Embedded Group
Valentin Kornienko
>пользовательский код кинул
>Код стандартной библиотеки
>Код 3rd party
где зовешь, там и ловишь. если тебе оно интересно - конвертишь в свой тип и перекидываешь
источник

L

LexsZero in Embedded Group
например, у меня щас в проекте есть некий класс который рулит небом и аллахом. класс внутри дергает разные другие модули, сторонние библиотеки, етц. публичные методы класса могут кидать application-specific ошибки (одна из которых суть "какая-то непонятная хуйня, вот underlying exception"). снаружи за эти методы дергает gRPC-прослойка, которая ловит апликейшн экзепшны и конвертирует их в grpc::Status и возвращает клиенту
источник

L

LexsZero in Embedded Group
(где статус - это структура из кода ок/неок и строчки с дескрипшном если неок)
источник

L

LexsZero in Embedded Group
также через такой механизм удобно прокидывать всякие штуки которые не-совсем-ошибки (например занятость, throw UNasObedError("мужчина вы что не видите")
источник

L

LexsZero in Embedded Group
и где-то на границе публичного апи это может конвертиться в Status(-EBUSY, "UNasObedError: мужчина вы что не видите")
источник

L

LexsZero in Embedded Group
ну или Status(-EUNKNOWN, "JsonParseError: learn to type, idiot")
источник

L

LexsZero in Embedded Group
если например это ошибка которая кинута какой-то из сторонних либ которая нам интересна as-is
источник

VC

Verum Corner in Embedded Group
кто может мне обьяснить, че такое challenge packet в передаче данных?
источник

A

Alexander in Embedded Group
А есть ли какой-нибудь способ узнать адрес текущей выполняемой функции? Речь не про указатель на функцию. А именно в рантайме
источник

FL

First_Name Last_Name in Embedded Group
зависит от архитектуры, но первое что приходит в голову - я бы предложил бы глянуть точку возврата из функции(регистр LR) и наверное если отмотать на одну команду назад будет тебе указатель на функцию
источник

аᶘ

асоциальный пикотран... in Embedded Group
Alexander
А есть ли какой-нибудь способ узнать адрес текущей выполняемой функции? Речь не про указатель на функцию. А именно в рантайме
А какую задачу ты решаешь этим?
источник

A

Alexander in Embedded Group
По стеку вызовов можно пошариться.
источник