summaryrefslogtreecommitdiff
path: root/cleopatre/devkit/plcdrv/arm/inc/processing.h
blob: 64f607d46e68dc84c9efbfce7a80b8933339a9a7 (plain)
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
111
112
#ifndef processing_h
#define processing_h
/* Cleopatre project {{{
 *
 * Copyright (C) 2008 Spidcom
 *
 * <<<Licence>>>
 *
 * }}} */
/**
 * \file    processing.h
 * \brief   interfaces for processing layer
 * \ingroup Cleopatre - PlcDrv
 *
 * this file content interfaces and exported macros, variables... For the
 * processing layer
 */

#include "common.h"

/** Define HPAV Ethernet type */
#define ETH_P_HPAV              0x88E1
/** Define MME fcall type */
#define HPAV_MME_P_FCALL        0xA006
/** Define MME sniffer type */
#define HPAV_MME_P_SNIFFER      0xA02C
#define HPAV_MME_P_VS_BASE      0xA000
#define HPAV_MME_P_DRV_BASE     0xB000
#define HPAV_MME_P_MS_BASE      0x8000

/** processing layer context structure */
struct processctx {
    uint8_t board_addr[ETH_ALEN];
    uint8_t broadcast_addr[ETH_ALEN];
};

/**
 * Find the Ethernet MME type.
 *
 * \param  eth_frame  Ethernet frame pointer.
 * \return  HPAV MME type.
 */
uint16_t get_eth_mme_type(uint8_t* eth_frame);

/**
 * Initialize the processing layer.
 *
 * \param  info  initialisation structure.
 * \param  dev   network device structure
 * \return  error code.
 */
int processing_init(struct init_info *info, struct net_device *dev);

/**
 * UnInitialize the processing layer.
 *
 * \return  error code.
 */
int processing_uninit(void);

/**
 * Processing procedure to add a buffer to CESAR.
 *
 * \param  pointer  buffer pointer.
 * \param  type  type of the message pointed.
 * \return  error code.
 */
int processing_buffer_add(void *pointer, enum buffer_type type);

/**
 * Processing procedure to release a buffer from CESAR.
 *
 * \param  pointer  buffer pointer.
 * \return  error code.
 */
int processing_buffer_free(void *pointer);

/**
 * Processing procedure for a A->L message.
 *
 * \param  pointer  buffer pointer.
 * \param  length  length of the message pointed.
 * \return  status queue.
 */
int processing_send(void *pointer, int length, buffer_type_t type);

/**
 * Processing procedure for a L->A message.
 *
 * \param  pointer  buffer pointer.
 * \param  length  length of the message pointed.
 * \param  type  type of message.
 * \return  error code.
 */
int processing_receive(void *pointer, int length, enum buffer_type type);

/**
 * Send a debug dump buffer to be filled by leon.
 *
 * \param  buffer  debug dump buffer to be filled.
 * \return  error code.
 */
int processing_debug_dump_buffer_send(void *buffer);

/**
 * Process a debug dump buffer for a leon to arm message.
 * \param  buffer  debug dump buffer received
 * \param  length  length of debug dump buffer received
 */
int processing_debug_dump_buffer_receive(void *buffer, int length);

#endif /* processing_h */