Page 1 of 1

Собственный формат S3F для хранения таблиц SECU-3

Posted: Sat Sep 15, 2012 10:16 am
by STC
Сегодня добавил в SECU-3 Manager возможность экспорта и импорта таблиц из файла в формате S3F. Это собственный формат, который я разработал для того, чтобы была возможность хранить таблицы отдельно от прошивки. Это немного упростит обмен таблицами между пользователями. Кроме этого, я давно хотел чтобы у SECU-3 был собственный формат ;)

Это файл с размером примерно 12кБ и с расширением s3f.
С форматом файла можно подробнее познакомиться изучив код в файле https://github.com/ashabelnikov/secu3ma ... DataIO.cpp

p.s. Это специализированная тема, общая тема по SECU-3 Manager viewtopic.php?f=68&t=959

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Sat Sep 15, 2012 2:00 pm
by DGrees
Супер! Этого не хватало с момента внедрения редактирования таблиц, т.е. ооочень давно))

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Sun Nov 18, 2012 8:46 pm
by serge__5518
STC wrote: ... добавил в SECU-3 Manager возможность экспорта и импорта таблиц из файла в формате S3F.
Посмотрел формат S3F.
Нашел в файле FirmwareDataMediator.cpp определение
структур. Поправь если ошибаюсь.

struct S3FMapSetItem == struct f_data_t;
S3FSepMaps.attenuator_table == fw_ex_data_t.attenuator_table;
S3FSepMaps.dwellcntrl_table == fw_ex_data_t.coil_on_time;
S3FSepMaps.ctscurve_table == fw_ex_data_t.cts_curve;
S3FSepMaps.ctscurve_vlimits[2]==???
Это - Related voltage limits
_uint cts_vl_begin;
_uint cts_vl_end; ???

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Sun Nov 18, 2012 10:26 pm
by STC
Да, эти структуры соответствуют друг другу (логически).
S3FSepMaps.ctscurve_vlimits[2], да это они:
//Related voltage limits
_uint cts_vl_begin;
_uint cts_vl_end;

Это два напряжения определяющие диапазон по горизонтальной оси графика ДТОЖ (тот, который задает зависимость температуры от напряжения). Эти значения редактируются под графиком.

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Mon Nov 19, 2012 7:53 pm
by serge__5518
STC wrote:Да, эти структуры соответствуют друг другу (логически)
Спасибо за разъяснение.
Я посмотрел механизм доступа к таблицам - это выражения типа:
fw_data_t* p_fd =
(fw_data_t*)(p_bytes + m_lip->FIRMWARE_DATA_START);
Как ты смотришь на то, чтобы немного изменить этот механизм?
Например определить структуру
typedef struct
{
typedef struct
{
unsigned char code [SIZE_CODE];
}code_mem;

fw_data_t fwd;

typedef struct
{
unsigned char bootloader [SIZE_BTLDR];
}bootloader_mem;
}device_mem;

SIZE_CODE, fw_data_t, SIZE_BTLDR известны на этапе компиляции.
Доступ к fw_data_t сводится к команде
(если p_bytes - указатель на массив содержащий прошивку):
fw_data_t* p_fd =
(fw_data_t*)(p_bytes + offsetof(device_mem ,fw_data_t) );
Вычисление смещения - на этапе компиляции.
Можно даже так:
fw_data_t* p_fd = &((device_mem*)p_bytes)->fw_data_t;

PS
Структура device_mem немного не читабельна из-за отсутствия пробелов -)

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Tue Nov 20, 2012 9:25 am
by STC
В принципе можно. А вообще зачем изменять механизм? Просто отрефакторить для улучшения красоты кода?

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Tue Nov 20, 2012 8:18 pm
by serge__5518
STC wrote:В принципе можно. А вообще зачем изменять механизм? Просто отрефакторить для улучшения красоты кода?
Код становится проще и более "читабельным" -)
Особенно для других (не для автора) -)
Да и упрощение механизма доступа идет только на пользу программе.
Что касается лично меня -), то были заморочки при реализации доступа к таблицам. Хотелось бы проще...
В общем, если дойдет очередь до реализации - не сочти за труд ... -)

Re: Собственный формат S3F для хранения таблиц SECU-3

Posted: Wed Nov 21, 2012 1:43 pm
by STC
ок