API для SECU
Moderator: STC
-
- LQFP112 - Up with the play
- Posts: 200
- Joined: Sat Jun 09, 2012 11:12 am
API для SECU
Обсуждаем создание API для SECU. Набор функций для "сторонних" разработчиков программного обеспечения. Данные функции должны обеспечить простой доступ к контексту SECU как со стороны PC, та и со стороны БК.
Предлагается следующий набор набор функций:
1) Настройка аппаратной части для связи с SECU
bool SetPtotocolSecu(unsigned int aSpeed, unsigned int aPortNo);
2) Подтверждение установки связи с SECU
bool TestPtotocolSecu(void);
3) Чтение версии программного обеспечения SECU, типа процессора, CRC прошивки и др.
bool GetSecuInfo(??????);
4) Чтение данных из RAM SECU в структуру fw_data_t
bool GetActiveContextSecu(fw_data_t* aFw_data_t );
5) Запись данных в RAM SECU из структуры fw_data_t
bool SetActiveContextSecu(fw_data_t* aFw_data_t );
6) Экспорт данных из структуры fw_data_t в файл S3F
bool ExportTablesToS3F(fw_data_t* aFw_data_t, AnsiAtring& aFileName);
Предлагается следующий набор набор функций:
1) Настройка аппаратной части для связи с SECU
bool SetPtotocolSecu(unsigned int aSpeed, unsigned int aPortNo);
2) Подтверждение установки связи с SECU
bool TestPtotocolSecu(void);
3) Чтение версии программного обеспечения SECU, типа процессора, CRC прошивки и др.
bool GetSecuInfo(??????);
4) Чтение данных из RAM SECU в структуру fw_data_t
bool GetActiveContextSecu(fw_data_t* aFw_data_t );
5) Запись данных в RAM SECU из структуры fw_data_t
bool SetActiveContextSecu(fw_data_t* aFw_data_t );
6) Экспорт данных из структуры fw_data_t в файл S3F
bool ExportTablesToS3F(fw_data_t* aFw_data_t, AnsiAtring& aFileName);
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
-
- LQFP112 - Up with the play
- Posts: 200
- Joined: Sat Jun 09, 2012 11:12 am
Re: API для SECU
[quote="STC"]Есть класс CComPort, в нем реализована настройка и работа с портом.[quote]
Ок!
Если просмотреть исходники менеджера то есть классы более высокого уровня. Я остановился на CCommunicationManager для обмена с SECU и CFirmwareDataMediator для работы с таблицами и настройками (они подтянут класс CAppSettingsManager как минимум).
Можно ли использовать эти классы? Или их использование "тянет" за собой инициализацию большого числа объектов?
Ок!
Если просмотреть исходники менеджера то есть классы более высокого уровня. Я остановился на CCommunicationManager для обмена с SECU и CFirmwareDataMediator для работы с таблицами и настройками (они подтянут класс CAppSettingsManager как минимум).
Можно ли использовать эти классы? Или их использование "тянет" за собой инициализацию большого числа объектов?
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: API для SECU
В принципе можно и с него, он выполняет вспомогательную функцию для инициализации и переключении между загрузчиком и прошивкой (обмен данными). За обмен данными с прошивкой отвечает класс CControlApp. За обмен данними с загрузчиком отвечает класс СBootLoader.Я остановился на CCommunicationManager для обмена с SECU
Класс ССontrolApp содержит весь необходимый функционал для приема и посылки пакетов в SECU-3 в режиме прошивки. Метод SetEventHandler(EventHandler* i_pEventHandler) устанавливает адрес объекта, который будет получать пакеты от SECU-3. Объект должен быть экземпляром класса унаследованного от интерфейса IAPPThreadEventHandler. Вызовы функций:
Code: Select all
virtual void OnPacketReceived(const BYTE i_descriptor, SECU3IO::SECU3Packet* ip_packet);
virtual void OnConnection(const bool i_online);
CFirmwareDataMediator тебе пригодится тоже. Этот класс не тянет за собой ничего лишнего, так что с ним будет еще проще.
CAppSettingsManager тебе не нужен, так как он связан с окном настроек менеджера.
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
-
- LQFP112 - Up with the play
- Posts: 200
- Joined: Sat Jun 09, 2012 11:12 am
Re: API для SECU
Благодарю. Надо "переварить" все сказанное -).STC wrote:Если не ломать существующую архитектуру, а только адаптировать ее под себя, то больших изменений и мучений наверное быть не должно.
Да, рассуждаю именно так - адаптировать имеющийся код. Написать внешние функции под интерфейс в шапке.
Смущает наличие "ненужных мне" объектов в этих классах. Если инициализировать указатели на них нулевыми значениями - наверно будет нехорошо -)
P.S.
Обновил файлы анализатора. Чтобы можно было посмотреть, скинул несколько логов(dir Logs) и свою прошивку (dir Soft).
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: API для SECU
Покажешь какие именно, разберемся. Я тебе все точно скажу.Смущает наличие "ненужных мне" объектов в этих классах. Если инициализировать указатели на них нулевыми значениями - наверно будет нехорошо -)
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
-
- LQFP112 - Up with the play
- Posts: 200
- Joined: Sat Jun 09, 2012 11:12 am
Re: API для SECU
Хорошо. Наверно завтра отпишусь.STC wrote:Покажешь какие именно, разберемся.
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
-
- LQFP112 - Up with the play
- Posts: 200
- Joined: Sat Jun 09, 2012 11:12 am
Re: API для SECU
Я думаю, необязательно переносить в API весь функционал менеджера( по крайней мере сейчас-). Некоторые функции лучше оставить за менеджером: заливка прошивки, работа с бутлоадером, настройка параметров. В API дать возможность чтения-записи рабочих таблиц (те, что в ОЗУ) и некоторых параметров. Параметры можно условно разделить на две группы: системные и технологические. Например "Нижнее значение давления ДАД"- технологический параметр а "Смещение кривой ДАД"- системный. Т.о. в API дать доступ к технологическим параметрам.STC wrote:За обмен данними с загрузчиком отвечает класс СBootLoader.
CCommunicationManager имеет в своем составе классы CComPort, CBootLoader, CControlApp, CControlAppAdapter, CBootLoaderAdapter. T.o. создав объект CCommunicationManager, я по идее уже не должен думать о реализации этих объектов(классов) и механизмов их взаимодействия. Я так думаю -).STC wrote:Класс ССontrolApp содержит весь необходимый функционал для приема и посылки пакетов в SECU-3 в режиме прошивки.
Хотелось бы использовать по-возможности функции(объекты) более высокого уровня, которые не завязаны с реализацией интерфейса менеджера.
А какой вариант ты бы предложил?
Насчет "лишних" объектов я имел ввиду например CBootLoader и CBootLoaderAdapter.
нашел такую строку инициализации класса:STC wrote:CAppSettingsManager тебе не нужен
m_fwdm = new CFirmwareDataMediator(params.GetFlashParameters());
Поэтому решил, что CAppSettingsManager будет необходим.
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: API для SECU
В принципе так и есть.CCommunicationManager имеет в своем составе классы CComPort, CBootLoader, CControlApp, CControlAppAdapter, CBootLoaderAdapter. T.o. создав объект CCommunicationManager, я по идее уже не должен думать о реализации этих объектов(классов) и механизмов их взаимодействия. Я так думаю -).
Это и есть самый высокий уровень. CBootLoader и CBootLoaderAdapter предлагаю не выкидывать, а перетянуть к себе тоже. Они ведь будут внутри и никому мешать не будут. Вдруг понадобятся...Хотелось бы использовать по-возможности функции(объекты) более высокого уровня, которые не завязаны с реализацией интерфейса менеджера.
А какой вариант ты бы предложил?
Насчет "лишних" объектов я имел ввиду например CBootLoader и CBootLoaderAdapter.
метод GetFlashParameters() возвражает структуру PPFlashParam. Просто заполни ее и передай вместо params.GetFlashParameters().нашел такую строку инициализации класса:
m_fwdm = new CFirmwareDataMediator(params.GetFlashParameters());
Поэтому решил, что CAppSettingsManager будет необходим.
см. файл PlatformParamHolder.*
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
-
- LQFP112 - Up with the play
- Posts: 200
- Joined: Sat Jun 09, 2012 11:12 am
Re: API для SECU
Попробую с CCommunicationManager. Вопросы будут позже -).STC wrote:В принципе так и есть.
Да, хотел спросить - ты пробовал компилировать менеджер под Builder?
Согласен. Можно просто не давать доступ из интерфейса APISTC wrote:Они ведь будут внутри и никому мешать не будут. Вдруг понадобятся
Здесь не соглашусь. Хотелось бы пользоваться "стандартными" методами менеджера для всех операций с прошивкой. Как в этом случае проще заполнить PPFlashParam?STC wrote:метод GetFlashParameters() возвражает структуру PPFlashParam. Просто заполни ее и передай вместо params.GetFlashParameters().см. файл PlatformParamHolder.*
ВАЗ 2103 , Secu-3 (m32),
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
ДАД GM Daewoo, ДТОЖ 23.3828,
Катушка 2111-3705010
- STC
- LQFP144 - On Top Of The Game
- Posts: 2420
- Joined: Fri Oct 22, 2010 10:47 pm
- Location: Ukraine, Kiev
- Contact:
Re: API для SECU
Под Builder компилировать не пробовал, да и не получится скорее всего ничего так как код написан с использованием MFC. Кишки, которые ты вытянешь из SECU-3 Manager тебе нужно компилировать с использованием MS Visual Studio и делать в виде динамически линкуемой DLL. Вызавать функции из DLL написанной на MS VS из программы написаной на Builder думаю можно, так как наоборот сделано в менеджере. В интернете есть инфа как это делать (делается через def файл), там вроде отличие только в наличии или отсутствии подчеркиваний в именах ф.
А это и есть стандартный метод. Хотя ты прав, более правильно будет перетянуть к себе класс PlatformParamHolder. Ему на вход передается только тип МК и все! (см. enum EECUPlatfrom)Здесь не соглашусь. Хотелось бы пользоваться "стандартными" методами менеджера для всех операций с прошивкой. Как в этом случае проще заполнить PPFlashParam?
Author of the SECU-3 project. SECU-3 Engine control unit / Ignition control system
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook
SECU-3.org (Русский)
SECU-3.org (English)
SECU-3 Club ВКонтакте
SECU-3 EMS Project Facebook