Blame view

RIOT/drivers/include/w5100.h 2.32 KB
fb11e647   vrobic   reseau statique a...
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
  /*
   * Copyright (C) 2016 Freie Universitรคt Berlin
   *
   * This file is subject to the terms and conditions of the GNU Lesser
   * General Public License v2.1. See the file LICENSE in the top level
   * directory for more details.
   */
  
  /**
   * @defgroup    drivers_w5100 W5100
   * @ingroup     drivers_netdev_netdev2
   * @brief       Driver for W5100 ethernet devices
   *
   * This device driver only exposes the MACRAW mode of W5100 devices, so it does
   * not offer any support for the on-chip IPv4, UDP, and TCP capabilities of
   * these chips. In connection with RIOT we are only interested in the RAW
   * Ethernet packets, which we can use through netdev2 with any software network
   * stack provided by RIOT (e.g. GNRC). This enables W5100 devices to communicate
   * via IPv6, enables unlimited connections, and more...
   *
   * @note        This driver expects to be triggered by the external interrupt
   *              line of the W5100 device. On some Arduino shields this is not
   *              enabled by default, you have to close the corresponding solder
   *              bridge to make it work...
   *
   * @{
   *
   * @file
   * @brief       Interface definition for the W5100 device driver
   *
   * @author      Hauke Petersen <hauke.petersen@fu-berlin.de>
   */
  
  #ifndef W5100_H
  #define W5100_H
  
  #include <stdint.h>
  
  #include "periph/spi.h"
  #include "periph/gpio.h"
  #include "net/netdev2.h"
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /**
   * @brief   W5100 error codes
   */
  enum {
      W5100_ERR_BUS = -1,
  };
  
  /**
   * @brief   W5100 device descriptor
   */
  typedef struct {
      spi_t spi;              /**< SPI bus used */
      spi_speed_t spi_speed;  /**< clock speed used on the selected SPI bus */
      gpio_t cs;              /**< pin connected to the chip select line */
      gpio_t evt;             /**< pin connected to the INT line */
  } w5100_params_t;
  
  /**
   * @brief   Device descriptor for W5100 devices
   */
  typedef struct {
      netdev2_t nd;           /**< extends the netdev2 structure */
      w5100_params_t p;       /**< device configuration parameters */
  } w5100_t;
  
  /**
   * @brief   So the initial device setup
   *
   * This function pre-initializes the netdev2 structure, saves the configuration
   * parameters and finally initializes the SPI bus and the used GPIO pins.
   */
  void w5100_setup(w5100_t *dev, const w5100_params_t *params);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* W5100_h */
  /* @} */