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#