File: busmaster_priv.h

package info (click to toggle)
wireshark 4.6.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 351,244 kB
  • sloc: ansic: 3,101,885; cpp: 129,710; xml: 100,972; python: 56,512; perl: 24,575; sh: 5,874; lex: 4,383; pascal: 4,304; makefile: 165; ruby: 113; objc: 91; tcl: 35
file content (110 lines) | stat: -rw-r--r-- 2,089 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/** @file
 *
 * Wiretap Library
 * Copyright (c) 1998 by Gilbert Ramirez <gram@alumni.rice.edu>
 *
 * Support for Busmaster log file format
 * Copyright (c) 2019 by Maksim Salau <maksim.salau@gmail.com>
 *
 * SPDX-License-Identifier: GPL-2.0-or-later
 */

#ifndef BUSMASTER_PRIV_H__
#define BUSMASTER_PRIV_H__

#include <gmodule.h>
#include <wiretap/wtap.h>
#include <wiretap/socketcan.h>

typedef enum {
    LOG_ENTRY_ERROR = -1,
    LOG_ENTRY_NONE = 0,
    LOG_ENTRY_EMPTY,
    LOG_ENTRY_HEADER,
    LOG_ENTRY_FOOTER,
    LOG_ENTRY_FOOTER_AND_HEADER,
    LOG_ENTRY_MSG,
    LOG_ENTRY_EOF,
} log_entry_type_t;

typedef enum {
    PROTOCOL_UNKNOWN = 0,
    PROTOCOL_CAN,
    PROTOCOL_LIN,
    PROTOCOL_J1939,
} protocol_type_t;

typedef enum {
    DATA_MODE_UNKNOWN = 0,
    DATA_MODE_HEX,
    DATA_MODE_DEC,
} data_mode_t;

typedef enum {
    TIME_MODE_UNKNOWN = 0,
    TIME_MODE_ABSOLUTE,
    TIME_MODE_SYSTEM,
    TIME_MODE_RELATIVE,
} time_mode_t;

typedef struct {
    unsigned year;
    unsigned month;
    unsigned day;
} msg_date_t;

typedef struct {
    unsigned hours;
    unsigned minutes;
    unsigned seconds;
    unsigned micros;
} msg_time_t;

typedef struct {
    msg_date_t d;
    msg_time_t t;
} msg_date_time_t;

typedef struct {
    msg_time_t timestamp;
    wtap_can_msg_type_t type;
    uint32_t   id;
    wtap_can_msg_data_t data;
} msg_t;

typedef struct {
    int64_t v0;
    int64_t v1;
    int64_t v2;
    int64_t v3;
} token_t;

typedef struct {
    int64_t     file_start_offset;
    int64_t     file_end_offset;
    protocol_type_t  protocol;
    data_mode_t data_mode;
    time_mode_t time_mode;
    msg_date_time_t  start;
} busmaster_priv_t;

typedef struct {
    FILE_T   fh;
    int64_t  file_bytes_read;

    char    *parse_error;
    int      err;
    char    *err_info;

    token_t  token;

    log_entry_type_t entry_type;
    busmaster_priv_t header;
    msg_t            msg;
} busmaster_state_t;

bool
run_busmaster_parser(busmaster_state_t *state,
                     int               *err, char **err_info);

#endif  /* BUSMASTER_PRIV_H__ */