source: asp3_tinet_ecnl_rx/trunk/bnep_bridge/src/main.h@ 400

Last change on this file since 400 was 400, checked in by coas-nagasima, 5 years ago

ファイルヘッダーの更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 6.8 KB
Line 
1/*
2 * TOPPERS PROJECT Home Network Working Group Software
3 *
4 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan
5 *
6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
11 * スコード中に含まれていること.
12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
15 * の無保証規定を掲載すること.
16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
18 * と.
19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
20 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
22 * 報告すること.
23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
27 * 免責すること.
28 *
29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
33 * の責任を負わない.
34 *
35 * @(#) $Id$
36 */
37
38#ifndef _MAIN_H_
39#define _MAIN_H_
40
41/*
42 * サンプルプログラム(1)のヘッダファイル
43 */
44
45/*
46 * ターゲット依存の定義
47 */
48#include <kernel.h>
49
50/*
51 * 各タスクの優先度の定義
52 */
53
54#define MAIN_PRIORITY 5 /* メインタスクの優先度 */
55#define ETHER_INPUT_PRIORITY 5 /* Ethernet 入力タスクの優先度 */
56
57#define MAIN_STACK_SIZE 2048 /* メインタスクのスタック領域のサイズ */
58#define ETHER_INPUT_STACK_SIZE 1024 /* Ethernet 入力タスクのスタックサイズ */
59
60#define NUM_MAIN_DATAQUEUE 1 /* メインタスクで待ち受けているデータキューのサイズ */
61
62#define ETHER_ADDR_LEN 6 /* Ethernet (MAC) Address */
63#define ETHER_TYPE_LEN 2 /* Type */
64#define ETHER_CRC_LEN 0/*4*/ /* CRC */
65
66#define IF_FLAG_UP 0x01U
67#define IF_FLAG_LINK_UP 0x10U
68
69#define ETHER_MIN_LEN 64
70#define ETHER_MAX_LEN (IF_MTU + sizeof(T_ETHER_HDR) + ETHER_CRC_LEN)
71
72#define IF_MIN_LEN ETHER_MIN_LEN
73
74#define IF_ETHER_NIC_HDR_ALIGN 0
75
76#define NUM_IF_BTUSB_TXBUF 2 /* 送信バッファ数 */
77#define NUM_IF_BTUSB_RXBUF 2 /* 受信バッファ数 */
78#define IF_BTUSB_BUF_PAGE_SIZE 1518 /* バッファサイズ */
79
80#define INTATR_IF_BTUSB_TRX (TA_NULL) /* 割込み属性 */
81#define INTPRI_IF_BTUSB_TRX (-1) /* 割込み優先度 */
82
83#define NUM_IF_RX62N_TXBUF 2 /* 送信バッファ数 */
84#define NUM_IF_RX62N_RXBUF 2 /* 受信バッファ数 */
85#define IF_RX62N_BUF_PAGE_SIZE 1518 /* バッファサイズ */
86
87#define INHNO_IF_RX62N_TRX INT_ETH_EINT /* パケット送受信 */
88#define INTNO_IF_RX62N_TRX INT_ETH_EINT /* パケット送受信 */
89#define INTATR_IF_RX62N_TRX (TA_NULL) /* 割込み属性 */
90#define INTPRI_IF_RX62N_TRX (-1) /* 割込み優先度 */
91
92#define NUM_ARP_ENTRY 10 /* ARP キャッシュエントリ数 */
93
94#define ETHER_MCAST_ADDR UINT_C(0x01) /* マルチキャスト・アドレス */
95#define GET_ETHER_HDR(nbuf) ((T_ETHER_HDR*)((nbuf)->buf))
96
97#define NB_FLG_NOREL_IFOUT UINT_C(0x80)
98
99#define NET_COUNT_ETHER_NIC(obj, cnt)
100
101/*
102 * 関数のプロトタイプ宣言
103 */
104#ifndef TOPPERS_MACRO_ONLY
105
106typedef struct t_net_buf T_NET_BUF;
107
108ER tget_net_buf (T_NET_BUF **blk, uint_t len, TMO tmout);
109ER rel_net_buf (T_NET_BUF *blk);
110
111typedef struct t_ifnet T_IFNET;
112typedef struct t_if_softc T_IF_SOFTC;
113
114/** Function prototype for netif status- or link-callback functions. */
115typedef void (*ether_status_callback_fn)(T_IFNET *ether);
116void ether_set_link_callback(ether_status_callback_fn link_callback);
117void ether_set_link_up(T_IF_SOFTC *ic);
118void ether_set_link_down(T_IF_SOFTC *ic);
119
120struct t_net_buf {
121 uint16_t len; /* データの長さ */
122 uint8_t idix; /* mpfid のインデックス */
123 uint8_t flags; /* フラグ */
124 uint8_t conn_pos;
125#ifdef IF_ETHER_NIC_NET_BUF_ALIGN
126 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN];
127#endif
128#if CPU_NET_ALIGN == 4 && IF_HDR_ALIGN != 4
129 uint8_t halign[4 - IF_HDR_ALIGN];
130#endif
131 uint8_t buf[IF_MIN_LEN]; /* バッファ本体 */
132};
133
134struct t_ifnet {
135 ether_status_callback_fn link_callback;
136 uint8_t flags; /* フラグ */
137};
138
139typedef struct t_ether_header {
140
141#if IF_ETHER_NIC_HDR_ALIGN != 0
142
143 uint8_t align[IF_ETHER_NIC_HDR_ALIGN]; /* アライン調整 */
144
145#endif /* of #if IF_ETHER_NIC_HDR_ALIGN != 0 */
146
147 uint8_t dhost[ETHER_ADDR_LEN];
148 uint8_t shost[ETHER_ADDR_LEN];
149 uint16_t type;
150} __attribute__((packed, aligned(2))) T_ETHER_HDR;
151
152#define T_IF_HDR T_ETHER_HDR /* インタフェースのヘッダ */
153
154typedef struct t_ether_addr {
155 uint8_t lladdr[ETHER_ADDR_LEN];
156} __attribute__((packed, aligned(2))) T_ETHER_ADDR;
157
158#define T_IF_ADDR T_ETHER_ADDR /* インタフェースのアドレス */
159
160struct t_if_softc {
161 T_IF_ADDR ifaddr; /* ネットワークインタフェースのアドレス */
162 uint16_t timer; /* 送信タイムアウト */
163 struct t_rx62n_softc *rx62n; /* ディバイス依存のソフトウェア情報 */
164 struct t_btusb_softc *btusb; /* ディバイス依存のソフトウェア情報 */
165 ID semid_txb_ready; /* 送信セマフォ */
166 ID semid_rxb_ready; /* 受信セマフォ */
167
168#ifdef _IP6_CFG
169
170 T_IF_ADDR maddrs[MAX_IF_MADDR_CNT]; /* マルチキャストアドレスリスト */
171
172#endif /* of #ifdef _IP6_CFG */
173};
174
175extern T_IF_SOFTC if_softc;
176
177/* メインタスク */
178void main_task(intptr_t exinf);
179
180/* ETHERNET→BNEPタスク */
181void ether_input_task(intptr_t exinf);
182
183#endif /* TOPPERS_MACRO_ONLY */
184
185#endif /* of #ifndef _MAIN_H_ */
Note: See TracBrowser for help on using the repository browser.