NetBurner 3.1
nbWifiWilcSpi.h
Go to the documentation of this file.
1 /*NB_REVISION*/
2 
3 /*NB_COPYRIGHT*/
4 
9 #ifndef __NBWILCSPI_H
10 #define __NBWILCSPI_H
11 
12 #include <buffers.h>
13 #include <nettypes.h>
14 #include <netinterface.h>
15 #include <constants.h>
16 #include <utils.h>
18 #include <wifi/wilc/nbWifiWilcConfig.h>
19 #include <wifi/wifiBsp.h>
20 
21 extern NB::Wifi * theWifiIntf;
22 
23 namespace NB
24 {
25  class NBWifiWILCSPI : public NBWifiWILC
26  {
27  int m_moduleNum; // Select SPI for platforms with multiple SPI
28  int m_csNum; // SPI chip select, or -1 to use a GPIO as a chip select
29  int m_IRQNum; // IRQ number/priority
30  int m_csConnector; // Connector containing the chip select
31  int m_gpioPinNum; // Used only if a GPIO signal is used for SPI chip select
32  OS_SEM BusTransferSem;
33 
34  static void ISR_0();
35  static void ISR_1();
36 
37  void WifiTask() override;
38 
39  friend class NBWifiWILC;
40  friend class Wifi;
41 
42  public:
43 
44  /* InterfaceBlock virtual functions */
45  void send_func( PoolPtr poolPtr ) override;
46  void kill_if() override;
47  void EnableMulticast( MACADR macAddress, BOOL addAddress ) override;
48  bool LinkActive() override;
49  int LinkSpeed() override;
50  bool LinkDuplex() override;
51  const char* GetInterfaceName() override;
52 
53  bool SetBusSpeed( uint32_t busSpeed ) override;
54  NBWifiWILCSPI( int irqNum, int moduleNum, uint8_t csNum, int connectorNum, int csGpioPinNum, int resetPinNum, int chipEnablePinNum, const char * name);
55 
56  inline int GetResetPinNum() {return resetPinNum;};
57  inline int GetConnectorNum() {return resetPinConnector;};
58  inline int GetChipEnablePinNum() {return chipEnablePinNum;};
59  inline int GetIRQNum() {return m_IRQNum;};
60  inline int GetChipSelectNum() {return m_csNum;};
61  inline int GetCSGpioPinNum() {return m_gpioPinNum;};
62  inline int GetSPIModuleNum() const {return m_moduleNum;};
63  inline OS_SEM * GetBusTransferSem() {return &BusTransferSem;};
64  inline OS_CRIT * GetBusTransferCrit() {return &busTxCrit;};
65  };
66 
67 } /* ----- end of namespace NB ----- */
68 
69 #endif /* ----- #ifndef __NBWILCSPI_H ----- */
Semaphores are used to control access to shared resource critical section, or to communicate between ...
Definition: nbrtos.h:318
Definition: dhcpv6_internal.h:34
An OS_CRIT object is used to establish critical sections of code that can only be run by one task at ...
Definition: nbrtos.h:893
NetBurner Buffers API.