Razvalyaev
7e0063eee0
Все основные файлы подтянуты без изменений Изменены (только папка main_matlab): - заглушки для ненужных функций (main_matlab.c) - iq библиотека (IQmathLib_matlab.c) - библиотеки DSP281x
136 lines
5.5 KiB
C
136 lines
5.5 KiB
C
/*
|
||
* oscil_can.h
|
||
*
|
||
* Created on: 24 мая 2020 г.
|
||
* Author: yura
|
||
*/
|
||
|
||
#ifndef SRC_LIBS_NIO12_ALARM_LOG_CAN_H_
|
||
#define SRC_LIBS_NIO12_ALARM_LOG_CAN_H_
|
||
|
||
#define CAN_BOX_PRIORITY_LOW_MAX_SIZE_BLOCKS 195L //3330L // 9999L
|
||
|
||
|
||
#define ALARM_LOG_NUMBER_BOX_IN_CAN 0
|
||
|
||
#define ALARM_LOG_CODE_STATUS_LOG_STOP 1 // Лог остановлен
|
||
#define ALARM_LOG_CODE_STATUS_LOG_RUN 2 // Лог идет...
|
||
#define ALARM_LOG_CODE_STATUS_LOG_RUN_TO_STOP 3 // Лог идет, но идет дозапись, скоро остановится.
|
||
|
||
|
||
/*
|
||
#define OSCIL_CAN_NUMBER_CHANNEL 32 // максимальное возможное кол-во каналов для буфера
|
||
#define OSCIL_CAN_NUMBER_POINTS 500 // максимальное возможное кол-во точек для буфера (для одного канала)
|
||
#define OSCIL_TIME_WAIT 5000 // период посылки всего массива в CAN (млсек)
|
||
#define OSCIL_CAN_NUMBER_POINTS_ADD 100 // запас точек при выполнении функции копирования рабочего буфера во временный. oscil_buffer->temp_oscil_buffer
|
||
|
||
#define OSCIL_CAN_NUMBER_POINTS_AFTER_STOP 100 // сколько точек записывать после остановки записи буфера по аварии или шиму
|
||
*/
|
||
|
||
|
||
typedef struct {
|
||
unsigned int global_enable; // разрешение передачи логов
|
||
unsigned int copy2temp; // копировать логи в temp перед передачей
|
||
unsigned int stage;
|
||
|
||
int cmd_fffc[3];
|
||
int cmd_fffd[3];
|
||
int cmd_fffe[3];
|
||
int cmd_ffff[3];
|
||
|
||
unsigned int post_points; // кол-во точек после аварии
|
||
unsigned int step; // шаг одной точки, мксек
|
||
unsigned int start; // код команды START
|
||
unsigned int oscills; // кол-во каналов - колонок
|
||
|
||
unsigned long real_points; // всего кол-во точек, полный размер данных получим = points*oscills
|
||
// нужный кусок для копии, данное количество скопируется из циклического буфера во временный лог.
|
||
|
||
unsigned int stop; // код команды START
|
||
unsigned int crc16; // crc16 данных
|
||
|
||
int *start_adr_real_logs; // начало массива данных, до копирования
|
||
// адрес начала реальных логов в циклическом буфере
|
||
|
||
int *start_adr_temp; // начало массива данных, после копирования
|
||
// адрес для временного размещения копии лога, лог скопируется из циклического буфера в этот развернувшись.
|
||
|
||
int *finish_adr_real_log; // окончание блока логов, до копирования
|
||
// конец логов в циклическом буфере
|
||
|
||
int *current_adr_real_log; // указатель на адрес где остановилвсь запись логов в циклическом буфере
|
||
|
||
// int *finish_adr_temp; // конец лога в temp буфере
|
||
unsigned long temp_points; // всего кол-во точек, полный размер данных получим = temp_points*oscills
|
||
// реальный размер циклическго буфера в точках.
|
||
|
||
unsigned long progress_can; // обратный счетчик, сколько осталось передать
|
||
unsigned int prev_status_alarm; // пред. состояние status_alarm
|
||
unsigned int status_alarm; // код аварии, лог автоматически передается при изменении этого статуса из 0->1
|
||
|
||
unsigned int timer_send; // время передачи всего блока
|
||
|
||
unsigned int temp_log_ready; // готовность данных temp для считывания по CAN
|
||
|
||
unsigned long can_max_size_one_block; // размер одного блока передаваемого за раз, надо кратное 3.
|
||
|
||
void (*clear)(); // Clear buffers
|
||
void (*send)(); // Send buffers
|
||
void (*copy_temp_buffer)(); // Copy work buffers to temp buffers
|
||
void (*prepare_data_can)(); // Предварительная подготовка перед передачей
|
||
|
||
} ALARM_LOG_CAN;
|
||
|
||
typedef ALARM_LOG_CAN *ALARM_LOG_CAN_handle;
|
||
|
||
|
||
|
||
#define ALARM_LOG_CAN_CAN_DEFAULTS { \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
{0,0,0}, \
|
||
{0,0,0}, \
|
||
{0,0,0}, \
|
||
{0,0,0}, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
0, \
|
||
CAN_BOX_PRIORITY_LOW_MAX_SIZE_BLOCKS, \
|
||
alarm_log_clear_buffer, \
|
||
alarm_log_send_buffer, \
|
||
alarm_log_copy_temp_buffer, \
|
||
alarm_log_prepare_data_can \
|
||
}
|
||
|
||
|
||
|
||
|
||
void alarm_log_clear_buffer(ALARM_LOG_CAN_handle);
|
||
void alarm_log_send_buffer(ALARM_LOG_CAN_handle);
|
||
//void alarm_log_next_position(ALARM_LOG_CAN_handle);
|
||
void alarm_log_prepare_data_can(ALARM_LOG_CAN_handle);
|
||
void alarm_log_copy_temp_buffer(ALARM_LOG_CAN_handle);
|
||
|
||
|
||
|
||
extern ALARM_LOG_CAN alarm_log_can;
|
||
|
||
#endif /* SRC_LIBS_NIO12_ALARM_LOG_CAN_H_ */
|
||
|
||
|