JAL WIFI
The goal of this project is a WIFI "stack" for the
JAL
language.
It is a "spin-off" of the
JAL ETHERNET
project, and so you may want to check out
JAL ETHERNET
to find documentation about TCP/IP
and the theory of operation.
Status
21 Sept 2005 We have received our "Frame Thrower" card from EDTP.COM. It has the ENC28J60
SPI ethernet chip. We hope to start working on the JAL ETHERNET driver soon.
21 Sept 2005 The Sandisk Connectplus is supported now. I have not completely merged
its code with the rest of the JAL WIFI project. I hope to do so soon. Meanwhile, you
can retrieve a "snapshot" from
here
.Please use the JALLIST to send me feedback.
10 June 2005 We now support both WIFI and NE2000 (ethernet) all in the same
source code base. We've added some sub-directories to better organize the project.
13 April 2005 New API for TCP, plus Javi's new table-based Web page, plus Javi's Telnet!
Screenshot of JAL Wifi Web Server
Since we are using Javi's clever pointer package, we support large packets. We recommend
staying compatible with the ethernet 1500 byte limit, but we could in theory support packets
over 2000 bytes in size!
WIFI Hardware
The board we are using is the
Airdrop-p
board from
EDTP.COM.
It is a 3.3 volt system with Picmicro cpu and a Compact Flash "CF" card-slot.
Other Picmicro CPUs should be usable, for example the 18LF452. In fact, we
did some experimenting last year with a 18LF452 and a wire-wrapped CF socket. Javi
developed a very nice "CF Monitor" program in JAL that was very useful in early
investigations of the Prism chipset. Look for Javi's documentation and "CF Monitor"
software on the
JAL ETHERNET
project pages. A 3.3 volt 18LF452 board based on Javi's
schematic
should work just fine with JAL WIFI.
Here is a list of "prism" CF cards that have been tested with the Airdrop card:
Linksys WCF12 (Prism3 chip antenna)
D-Link DCF-660W (Prism 2.5 PIFA (Patched Inverse "F" Antenna))
TRENDnet TWE-222CF (Prism 2.5 chip antenna)
Netgear MA701 (By size looks to be Prism 3 with PIFA)
Zonet ZCF1100 (Prism 3 PCB antenna)
Sandisk ConnectPlus card
The WIFI card I am using is the Linksys WCF12
but we should support
many CF cards
that use the "prism" 2, 2.5 or 3 chipset.
Please note-- as far as we can determine, these CF cards only operate at 3.3 volts.
Note: We are
using
JAL
version 0.4.62, because it has better support for the 18LF8621
chip.
ETHERNET Hardware-- NE2000 or Realtek NE2000 clone chip
We can use the same boards as the
JAL ETHERNET
project.
Software
Example 1, reading and parsing the CIS. This is also a good "first program" to run on a new
board or a new WIFI card. If you are having trouble getting ARP and PING to work, run this
program and send us the results.
Example 2, Demonstrates HTTP (web server), Telnet, ARP reply and PING reply. This example
is running on the Airdrop WIFI board. But you could edit wifi.jal's "include" files to
allow it to run on a different board, like a 18F452.
Example 3, Demonstrates HTTP (web server), Telnet, ARP reply and PING reply. But this example
is running on my homebrew 18F452 board with EDTP's PacketWhacker NE2000/Realtek ethernet board.
But you could modify ether.jal's "include" files to allow it to run on a different board.
JAVI's libraries
With these libraries, Javi has solved several very big problems for us! And
they are very easy to use too!
Board and User-Preference files
Networking protocol "stack"
Example Applications- Web server, Telnet. Note-- updated to use new TCP API!
Misc support files
Generating your web page, using Javi's improved MKWEB.C
The web page needs to be generating by running mkweb. It will take an input
file such as index.html and create a JAL file named web.jal.
A Python version of "mkweb" would be useful for those who do not have a C
compiler.
Other documentation
On-line user's groups
Where to find free/open documentation about the Prism-based Wifi cards
Screenshots from Example Programs
Here is the output from CIS.JAL for my Linksys WCF12 card
CIS v 0.1
01
17
1D
15 LinksysWireless CompactFlash Card
20 MANFID 8A 02 73 06
21 FUNCID 06 00
22 FUNCE 01 07
22 FUNCE 02 40 42 0F 00
22 FUNCE 02 80 84 1E 00
22 FUNCE 02 60 EC 53 00
22 FUNCE 02 C0 D8 A7 00
22 FUNCE 03 07
22 FUNCE 04 06 00 0C 41 15 B4 64
22 FUNCE 05 01
1A COR 03 E0
1B C1 01 19 77 B5 1E 35 B5 3C 36 36 05 46 FF FF FF
FF
Here is what a working Airdrop will print out on its UART
P05 v 0.2
RFREE=BD PKTSZ=F8
CHKSUM OK
PRISM OK: AA 55
IP C0 A8 00 63
MAC 00 0C 41 15 B4 64
STAT= 04
Here is what you get if you do not have the Prism card plugged into its slot
P05 v 0.2
RFREE=BD PKTSZ=F8
CHKSUM OK
PRISM BAD: 55 55
Err: GR2
Here is the output from my Linux console
tp# ./udp_test
sending
n=12, rx=JAL WIFI 01
sending
n=12, rx=JAL WIFI 02
sending
n=12, rx=JAL WIFI 03
sending
n=12, rx=JAL WIFI 04
sending
n=12, rx=JAL WIFI 05
tp# ping 192.168.0.99
PING 192.168.0.99 (192.168.0.99) 56(84) bytes of data.
64 bytes from 192.168.0.99: icmp_seq=0 ttl=64 time=27.5 ms
64 bytes from 192.168.0.99: icmp_seq=1 ttl=64 time=27.8 ms
64 bytes from 192.168.0.99: icmp_seq=2 ttl=64 time=27.9 ms
64 bytes from 192.168.0.99: icmp_seq=3 ttl=64 time=27.7 ms
64 bytes from 192.168.0.99: icmp_seq=4 ttl=64 time=28.3 ms
--- 192.168.0.99 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 27.531/27.914/28.396/0.340 ms, pipe 2
tp#