LINUX.ORG.RU

Сообщения gogoer

 

dbus-daemon в docker

Форум — General

Здравствуйте. Есть приложение, использующее dbus для обмена данными между модулями. Для юнит тестирования создаются два объекта, которы должны общаться по dbus. На хосте работает нормально, но тесты должны запускаться в docker-е. Там есть возможность доставить dbus-daemon. Подскажите, как его правильно запустить, чтобы один модуль мог зарегистрировать сервис, а второй отправлять ему сообщения. Я так понимаю, нужно использовать session bus. Полагаю, самое простое, прямо из приложения запустить dbus-daemon и потом к нему подключиться. На данный момент не получается корректно запустить демона в режиме session. При попытке подключиться к сервису, имею ошибку: error: QDBusError(«org.freedesktop.DBus.Error.NotSupported», «Unable to autolaunch a dbus-daemon without a $DISPLAY for X11»). Как это правильно реализовать?

 ,

gogoer
()

Разработка I2C драйвера

Форум — Development

Здравствуйте. Есть девайс на микроконтроллере STM8, который мониторит температуру и хранит ее в регистре. К нему подключаюсь по I2C с малины и считываю состояние регистров, все работает. Хотелось бы в образовательных целях написать драйвер уровня ядра. Подскажите, как правильно делается.. Желательно, чтобы драйвер уведомлял приложение при измерении температуры. Можно опрашивать в цикле в приложении, но вариант вроде так себе. Можно ли в драйвере дергать какой-то колбек или прерывание, если температура изменилась, чтобы приложение узнало об этом и отреагировало?

 , ,

gogoer
()

SWIG + Python Enums

Форум — Development

Добрый день. Есть библиотека на C++, нужно сделать для нее обертку для работы с Python. В качестве инструмента был выбран SWIG. Все более-менее работает, но остается нерешенным вопрос с использованием enum. В коде C++ присутствует множество enum, например,

enum class Color{Red, Green, Blue}

После парсинга мы создаем модуль my_module, а enum преобразуется в набор констант

color_red = 0, color_green = 1 и color_blue = 2

это, собственно, и не устраивает. Хочется использовать нормальный enum из Python.

в качестве временного решения пока используем преобразование констант в enum в рантайме, решение было подсмотрено в интернетах.

%pythoncode %{
from enum import Enum
def enum(prefix):
    tmpD = {k:v for k,v in globals().items() if k.startswith(prefix + '_')}
    for k,v in tmpD.items():
        del globals()[k]
    tmpD = {k[len(prefix)+1:]:v for k,v in tmpD.items()}
    globals()[prefix] = Enum(prefix,tmpD)

enum('Color')

del enum
del Enum
%}

Оно работает, но мы лишаемся поддержки автодополнения при написании кода, да и в целом, это костыль.

Я так понимаю, единственно нормальный рабочий вариант - это в тайпмапе out создавать класс enum с помощью c api и возвращать этот объект в python слой.

Возможно, кто-то сталкивался уже с подобной проблемой и как-то ее решил. Буду рад выслушать любые предложения.

 , ,

gogoer
()

Форматирование фрагментов кода с помощью clang-format

Форум — Development

Здравствуйте.

Имею, можно сказать, текстовый документ, содержащий фрагменты кода на C++. И есть необходимость эти фрагменты подвергнуть автоматическому форматированию с помощью clang-format.

clang-format умеет форматировать часть файла двумя способами:

  • с помощью параметра -lines begin:end
  • с помощью установки в тексте комментариев // clang-format on/off

Первый случай мне не очень подходит, т.к. документ может быть очень длинным, а вот второй вариант вполне подходит.

Но у меня возникает проблема с форматированием первых строк кода. Например, если имеем такое содержимое документа:

// clang-format on
for(const auto& element: elements){if(element > 0){element++;}}
// clang-format off
some text
more text
// clang-format on
for(const auto& element: elements){if(element > 0){element++;}}
// clang-format off
some text

то после clang-format-а получаю:

// clang-format on
for(const auto& element: elements)
{
    if(element > 0)
    {
        element++;
    }
}
// clang-format off
some text
    // clang-format on                 <---------------
    for(const auto& element: elements) <---------------
{
    if(element > 0)
    {
        element++;
    }
}
// clang-format off
some text   

т.е. первые пару строк после текста съезжают вправо, что не радует.

Подскажите, это проблема настройки параметров clang-format или же что-то еще? Ну и по возможности подскажите, как исправить))

 ,

gogoer
()

Слабый сигнал bluetooth в Ubuntu

Форум — General

Здравствуйте. Имею два компьютера под управлением Ubuntu 20.04. В одном установлен miniPCI модуль Qualcomm Atheros QCA9377, а в другом miniPCIe модуль Intel 8265. Оба модуля имеют Wi-Fi + BT. На обоих компьютерах проблема с уровнем сигнала BT - он очень слабый, беспроводные наушники уверенно работают на расстоянии до 20см от компьютера, дальше сигнал пропадает. Подскажите, в чем может быть проблема? Может есть какие-то нюансы настройки BT в Ubuntu?

 ,

gogoer
()

Восстановление случайно удаленных системных файлов

Форум — Desktop

Здравствуйте.

Linux Ubuntu 18.04.

Случилась беда.

Хотел очистить каталог сборки проекта командой

sudo rm -R ./*

но точка не нажалась)) в результате система сломалась совсем. Подскажите, как по возможности вернуть в прежнее состояние. Никаких дополнительных действий пока не совершал. Я так понимаю, если загрузиться с live диска или флэшки, можно восстановить удаленные файлы до прежнего состояния. Чтобы не испортить все, прошу совета по правильному алгоритму действий.

 

gogoer
()

RSS подписка на новые темы