LINUX.ORG.RU

Сообщения Camel

 

Точка доступа на RTL8188CUS.

 , , ,

Пытаюсь запустить точку доступа на Mele A2000G. lsusb сообщает, что в ней стоит:

Bus 003 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Вики Debian'а, и не только оно, говорит, что заработать всё должно с модулем 8192cu. На этой странице говорится, что нужно ещё некоторые опции модуля сообщить ядру. И hostapd тоже надо взять не из реп, но сканпелять самому.

Выполнил все условия, но при запуске hostapd получаю сообщение

ioctl[RTL_IOCTL_HOSTAPD]: Operation not supported
К сети подключиться не могу. Что же делать?

Camel
()

Как собрать и запустить тесты?

 , , , , wscript

Есть waf и wscript, которые собирают провку для некоторого прибора на ARM'е (в данном случае ARM это микроконтроллер, а не микропроцессор). Прошивка написана на C и использует gcc-arm-none-eabi.

Есть большое желание внедрить TDD в разработку этой прошивки, для чего надо собрать тесты с Google Testing Framework. gtest написана на C++, тесты запускаются на машине программиста, а не целевой, потому собираться должны другим компилятором с другими настройками, обычным g++ для i386. Это, конечно, не совсем хорошо, но всё равно лучше чем ничего. Тесты лежат в отдельной директории, там есть wscript для сборки тестов.

Сейчас у меня проблема, что я вообще не могу собрать тесты. Конечно же я пытаюсь запустить сборку тестов из wscript'а сборки прошивки, потому что тесты должны запускаться вместе со сборкой.

Как правильно вызвать сборку тестов?

Camel
()

Книга про C не для начинающих.

 langc,

Подскажите какую книгу лучше прочитать дабы лучше понять язык C и устройство ЭВМ. Как работает компилятор, что делает препроцессор, что такое связывание, раннее, позднее, динамическое, символы. Как в ЭВМ происходит выделение памяти, что происходит при вызове функции.

Camel
()

Поморгать светодиодом Arduino с прерываниями.

 , ,

Что-то у меня ум за разум заходит. Не удаётся написать тривиальную программу для Arduino UNO. Хочу чтобы светодиод (который на ноге digital 13) моргал.

Алгоритм такой. Есть таймер, который каждые N миллисекунд вызывает прерывание, где добавляет 1 к переменной-счётчику. В основном цикле крутится проверка значения этой переменной. Если значение достигло некоторой величины, то меняем уровень сигнала на digital 13, и обнуляем переменную-счётчик. Вроде бы всё просто, но не работает. ЧЯДНТ?

Да, Arduino, конечно, offtopic на linux'овом сайте. Но надеюсь мне кто-нибудь поможет.

Вот код:

#include <avr/interrupt.h>

int status; // Глобальная переменная в которой лежит состояние светодиода, горит-не_горит.
int tick_counter; // Переменная-счётчик вызовов прерывания.

void init (void) {
  cli(); // Запрещаем все прерывания на время инициализации.

  DDRB |= (1<<PB5);  // Set D13 as output pin.
  //PORTB |= (1<<PB5); // Set D13 level high.

  status = 0;
  tick_counter = 0;

  OCR0A = 65535;
  TIMSK0 |= (1<<TOIE0); // Включаем прерывание по достижению Timer/Counter0 значения OCR0A.
  TCCR0A |= (1<<WGM01) | (1<<WGM00); // Работаем в режиме FastPWM.
  TCCR0B |= (1<<WGM02) | (1<<CS02) | (1<<CS00); // Делитель 1/1024. С таким делителем и OCR0A прерывание будет вызываться примерно каждые 4 мс.

  sei(); // Закончили инициализацию, разрешаем все прерывания.
}

void run() {
  while(1) {

    if (tick_counter >= 5) {
      if (status == 1) {
	PORTB &= ~(1<<PB5);
	status = 0;
      }
      else {
	PORTB |= (1<<PB5);
	status = 1;
      }
      tick_counter = 0;
    }
  }
}

ISR(TIMER0_OVF_vect) {//Обработка прерывания по переполнению Timer/Counter0
  tick_counter++;
}

int main(void) {
  init();
  run();

  return 0;
}

Camel
()

Напишите новость про выходо Upstart-1.8.

 

Дорогие друзья, напишите кто-нибудь, пожалуйста, новость про выход свежей версии Upstart'а. Сам я не специалист в системах иницилазации. Кроме того я не нашёл release notes или changelog'а. Запишем это Upstart'у в минус.

Camel
()

Реально ли аппаратно кодировать/декодировать видео на Mele A2000G?

 , , , ,

Есть железка Mele A2000G, в ней стоит ARM'овский процессор Allwinner A10, в нём есть графическое ядро Mali-400. В характеристиках заявлено, что имеется возможность аппаратно кодировать и декодировать h264 и MPEG. Подозреваю, что планшеты с Android'ом на том же чипе даже это используют. Ещё есть открытый драйвер для Mali под названием Lima, с которым даже удалось запустить Quake III.

Скажите, а в Ubuntu возможно использовать аппаратное кодирование/декодирование видео, или приходтся об этом пока только мечтать?

Camel
()

Вышла новая минорная версия планировщика Fcron.

 , , , minor,

Поскольку минорная версия в которой только исправлены баги и ускорены некоторые места в программе даже на мини-новость для главной страницы не тянет, но всё же я считаю нужным объявить об этом здесь. 3 марта вышла новая минорная версия планировщика заданий Fcron.

Fcron является несомненно самым гибким в семействе подобных программ (vixie-cron, dcron, anacron). Имеет удобный синтаксис конфигурационного файла, который помимо стандартных «запускай в такое-то время» и «запускай каждые Nчасовминут» позволяет создавать задания видя «запусти с 1 часу ночи до 5 утра как только load упадёт ниже 3.0» или «запусти в случайный момент между 16:00 и 19:35», а так же многие другие. Конечно всё это можно реализовать стандартным vixie-cron'ом и bash'евскими сценариями, но зачем городить костыли.

Выход очередной версии означает, что проект жив и развивается.

Для меня остаётся загадкой почему Fcron до сих пор не стал планировщиком по умолчанию в большинстве дистрибутивов GNU/Linux, ведь он реально превосходит vixie-cron по удобству и возможностям, и не уступает по надёжности.

Camel
()

Поиск посылки из DX.

 , , ,

Кто-нибудь может хотя бы дать ссылку на описание успешной истории вытрясания из Почты РФ посылки из DX, а лучше ещё и получения с них компенсации за нарушение сроков доставки? Есть истории как удавалось вытрясти деньги когда посылало частное лицо, но там всё начиналось с подачи заявления с:

  • номером отслеживания (трекинг)
  • копией чека за оплату почтовых услуг
  • формой CP72

Первое есть, а с последними двумя пунктами загвоздка. Звонил в DX, там китаянка обещала подать заявление на розыск с их стороны. Это, конечно, хорошо, но подозреваю на такое заявление откуда-то из Китая на Почте РФ наплюют или пришлют отписку. В любом случая я не смогу оказывать довление и капать на мозг как в этой истории. Кроме того я не смогу вытрясти из Почты РФ компенсацию за нарушение сроков доставки, а очень хочется, для острастки, так сказать.

Update: по телефону горячей линии оператор Елена сказала, что для подачи заявления на розыск достаточно копии invoice и трекинг.

Camel
()

Как преобразовать GLib.Value к Gst.Pad?

 , , , ,

В Gstreamer'е у всякого элемента можно вызвать весьма полезный итератор iterate_pads() или iterate_sink_pads(). У этого итератор есть метод next() без которого использование его лишено смысла. Однако в качестве параметра этот метод принимает GLib.Value, соответственно в соответствующее место в памяти этот метод next() кладёт GLib.Value, а не Gst.Pad. По-простому преобразовать GLib.Value к Gst.Pad не получилось, возможно это надо делать каким-то специальным методом. Каким, спрашивается? Кто-нибудь может показать пример использовать итераторов в Vala и GStreamer (на Vala)?

Camel
()

Как дела у MIPS'а?

 ,

На фоне бурного расцвета этих ваших ARM'ов хочется узнать как дела у другой «альтернативной» архитектуры, у MIPS'а?

Когда-то у меня был ноутбук на MIPS'е (Альфа-400), кажется на MIPS'е был первый планшет способный проигрывать FullHD, возможно Столман до сих пор пользуется ноутбуком на MIPS'е, изредка проскакивают новости о выпуске каких-то системных плат с MIPS'ом и поддержкой PCIexpress, DDR2 и других более-менее привычных комплектующих, но это капля в море по сравнению с потоком новостей про ARM. Свежих новостей про MIPS как-то не слышно. Неужели пациент скорее мертв, чем жив? А ведь MIPS изначально разрабатывался как архитектура для «серьёзных» вычислений и суперкомпьютеров, в отличие от энергоэффективного ARM'а.

На ARM'е, тем временем, помимо ноутбуков и планшетов можно настольную машину сделать задёшево. Например из Mele A2000G. А где пощупать живой MIPS?

Camel
()

На главной чатик.

На главной странице ресурса под видом новости висит какой-то уютный чатик. Зачем заблокирована возможность отправки комментариев для посетителей ресурса не пояснено.

Camel
()

Использование функций и переменных из C в Vala.

 ,

Как в Vala использовать функцию на C? Знаю, что можно воспользоваться словом extern, но есть ещё вопросы.

У меня есть функция, которая принимает 2 параметра: gchar* и GHashTable*. В первом лежит имя файла, а по второй ссылке GHashTable в который эта функция кладёт всякие штуки. В Vala указателей нет, есть ссылки (reference). Как мне имея строку с именем файла и объект HashTable передать их в extern функцию?

А ещё, как это всё собирать/канпелять? С какими опциями запускать valac если в файле есть внешние функции из C?

Camel
()

Помогите разобраться с GSources, GMainContext.

 event source, , ,

Помогите разобраться с источниками событий (GSource, GIOSource), контекстами (GMainContext) и обработчиками этих событий.

У меня есть Beaglebone, на котором я хочу обрабатывать прерывание изменения уровня на одном из GPIO. Вот пример того как это делается на C. Для Ъ:

struct pollfd pfd[1];
pfd[0].fd = open ("/sys/class/gpio/gpio34/value", O_RDONLY);
pfd[0].event = POLLPRI;
pfd[0].revent = 0;

while (1) {
    poll (pfd, 1, -2);
    something_useful ();
}
Функция poll() не завершается пока не происходит событие на которое настроено прерывание. Когда это событие происходит выполнение poll() завершается, выполняется какая-то полезная функция, после чего снова переходим к функции poll() и ожидаем события.

А теперь вопрос, как это сделать с использованием GLib, желательно даже на Vala, но и на C пойдёт.

Правильно я понимаю, что «вместо» while (1) будет GMainLoop? Правильно ли я понимаю, что нужно в каком-то контексте завести источник событий (GIOSource?) ? А ещё нужно к чему-то прицепить g_source_add_poll() и g_source_set_callback(). Может кто-нибудь показать пример кода?

Camel
()

Можно ли получить с USB'шной камеры небоработанный поток данных?

 , ,

Если я подключаю USB'шную камеру, то в системе она видится как /dev/video0. Если я GStreamer'ом беру с неё поток данных, то это video/x-raw, хотя я подозреваю, что камера на самом деле передаёт по USB поток сжатый каким-то кодеком, возможно mpeg2 или mpeg4, а распаковкой его занимается драйвер (возможно сильно неоптимальным способом). Прав ли я? Можно ли получить необработанный поток данных чтобы самому с ним что-то делать, например писать на файловую систему, или передавать по сети, или распаковывать аппаратным декодером.

Camel
()

Как разбивать программу на множество файлов?

 ,

Как в Vala разбивать программу на множество мелких файлов? В C и C++ для этого были заголовочные файлы и #include'ы, а собственно исполняемый код можно было писать почти в произвольном порядке и разбивке по файлам. Ещё можно было в заголовочном файле объявить класс и его методы, а определение сделать в другом файле.

В Vala, насколько я смог понять, нет опции #include, нет заголовочных файлов, определение метода нельзя вынести за пределы его объявления. В результате классы у разрастаются, программа разрастается ещё больше, заповедям написания «чистого» кода это совершенно противоречит. Что же делать? С++ не предлагать.

Camel
()

О наследовании и вызове методов.

 

Я привык, что в ОО языках если есть:

  • Класс A
  • В классе A определён метод action()
  • Есть класс B наследующий от A

, то я могу вызывать метод action() для экземпляров B. Другими словами, если возможно A.action() и B::A, то возможно B.action().

А если я использую GObject, то это так или нет?

Пусть у нас есть

typedef _MamanBar MamanBar;
typedef _SonBar SonBar;

struct _MamanBar
{
GObject parent_instance;
};

struct _SonBar
{
MamanBar parent_instance;
};

void maman_bar_action (MamanBar *self)

Я ведь не могу вызывать

SonBar *son;
/* */
maman_bar_action (son);
Так? Нужно ведь вызывать
SonBar *son;
/* */
maman_bar_action (MAMAN_BAR (son));

Получается, что мне чтобы вызывать метод недостаточно знать, что он был определён в родительском классе, но точно знать, что в каком из классов иерархии наследования он был определён. Это так?

Помимо того что это лишняя головная боль, не является ли это нарушением принципов ООП?

Или я что-то делаю не так?

Camel
()

Почему пол холодный?

 

Почему в многоэтажках пол холодный? Ведь этажом ниже тоже есть квартира, и в ней топят, и в ней тёплый воздух поднимается к потолку, значит должен греть мой пол.

Camel
()

Индексирование видеофайла.

 , , matroskamux,

Что такое индексы в файле? Читая индексы видеопроигрыватель может определить как долго длится видеофрагмент в файле? Дело в том, что моя программа испльзующая GStreamer создаёт файлы, если я правильно понимаю, без индекса. Их нельзя перематывать, а при воспроизведении не показывается сколько осталось до конца. Как это исправить? Я смотрел свойства элементов, у них у всех has no indexing capabilities. Единственно, у matroskamux есть свойство min-index-interval, но установка его в значение 0 или 1000000 ничего не меняет. Как заставить gstreamer проиндексировать файл?

Camel
()

Как понять когда оборвался сигнал IP'шной камеры наблюдения?

 , , , ,

Как в программе использующей GStreamer понять, что пропал сигнал с IP'шной камеры (ASF'ной или RTSP'шной)?

То есть предположим у меня в сети есть камера отдающая поток RTSP, на сервере крутится программа с gstreamer'овским pipeline'ом. Как понять, что поток данных прекратился? Например из-за отключения камеры.

Отлов сообщения GST_STREAM_STATUS_TYPE_LEAVE не подходит, поскольку внутри программы есть елемент tee к котором то подключаются, то отключатся «потребители», а указанное сообщение проходит по шине сообщений если кто-то отключается, что вовсе не означает отключения камеры и остановки всех элементов.

Если камера отключилась, то перейдут ли какие-нибудь элементы из состояния PLAYING в PAUSED или NULL? Какие элементы? source, demux? Вызываются ли при этом какие-то сигналы или выдаются сообщения? Может у source'а или demux'а какие-то pad'ы должны отвалится? Вообще, при каких условиях они отваливаются?

Camel
()

Терминальный сервер и compiz.

 , ,

Предположим, что у меня есть интернет-кафе на 20 мест. Конечно же я хочу минимизировать расходы, потому ставлю один терминальный сервер и 20 тонких терминалов. Можно ли на этих терминалах использовать всякие эффекты задействующие видеокарту? Будет ли видеокарта терминального сервера использоваться при проигрывании видео? Или видеокарта такой ресурс, который невозможно делить?

Camel
()