-
Notifications
You must be signed in to change notification settings - Fork 36
/
WiShield.cpp
98 lines (74 loc) · 2.27 KB
/
WiShield.cpp
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
/******************************************************************************
Filename: WiShield.cpp
Description: WiShield library file for the WiShield 1.0
******************************************************************************
TCP/IP stack and driver for the WiShield 1.0 wireless devices
Copyright(c) 2009 Async Labs Inc. All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the terms of version 2 of the GNU General Public License as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Contact Information:
Author Date Comment
---------------------------------------------------------------
AsyncLabs 05/01/2009 Initial version
AsyncLabs 05/29/2009 Adding support for new library
*****************************************************************************/
extern "C" {
#include "witypes.h"
#include "global-conf.h"
#include "network.h"
#include "g2100.h"
#include "spi.h"
void stack_init(void);
void stack_process(void);
}
#include "WProgram.h"
#include "WiShield.h"
boolean WiShield::init(U8 seconds)
{
boolean retVal = false;
zg_init();
#ifdef USE_DIG0_INTR
attachInterrupt(0, zg_isr, LOW);
#endif
#ifdef USE_DIG8_INTR
// set digital pin 8 on Arduino
// as ZG interrupt pin
PCICR |= (1<<PCIE0);
PCMSK0 |= (1<<PCINT0);
#endif
// TODO: potential for rollover bug after ~58 days...
unsigned long time = millis();
while(time + (seconds * 1000) > millis()) {
if(1 != zg_get_conn_state()) {
zg_drv_process();
}
else {
retVal = true;
break;
}
}
stack_init();
return retVal;
}
void WiShield::run()
{
stack_process();
zg_drv_process();
}
#if defined USE_DIG8_INTR && !defined APP_WISERVER
// PCINT0 interrupt vector
ISR(PCINT0_vect)
{
zg_isr();
}
#endif
WiShield WiFi;