Dann wie gehabt. SocketHandle erzeugen usw.
Code
wzReset;
wzTina_Stop;
wzsetIPAddr(LocalIP, Mask);
wzsetGatewayAddr(Gateway);
wzsetHWAddr(MacAddr);
wzsetTimeOut(3000);
wzsetRetryCount(3);
IF not wzTina_Init then
Writeln(serout, 'wzTINA Init Error');
loop
BeepOut(100, 1);
mDelay(500);
endloop;
endif;
wzTINASetPriority( TinaPrioHigh);
wzTINA_Start; // now we can start the wzJobhandler
Writeln(serout, 'wzTINA start..');
mDelay(2000); // Wait for Switch/Hub to see Phy !
Code
type
TwzStatus = (wzsNoErrors, wzsInvalidHandle, wzsInitFailed, wzsNotInitialized,
wzsSockClosed, wzsBufferParam, wzsSendFailed, wzsTimeOutErr,
wzsListenFailed, wzsSockConnected, wzsSockListen, wzsSockCloseWait,
wzsSockClosing, wzsSockUDP, wzsSockRaw, wzsSockMAC, wzsSockInit);
TwzPacketReceive = Record
PeerIP : tIPaddr;
PeerPort : Word; // Big Endian !!
BufferPtr : Pointer;
BufferLen : Word;
end;
TwzSocketNDAck = (NoDelayedAck, DelayedAck);
TwzBroadcast = (NoBroadcast, Broadcast);
TwzSocketProtocol = (CLOSED, protTCP, protUDP, protxUDP, protIPRAW, protMACRAW);
TwzxUDPAKNPort = (xAKNLocalPort, xAKNRemotePort);
TwzSocket = Record
Protocol : TwzSocketProtocol;
DelayAck : TwzSocketNDAck;
// DynTimeOut :TwzNDTimeOut; // not use
Broadcast : TwzBroadcast;
LocalPort : Word;
RemoteHost : tIPaddr;
RemotePort : Word;
TimeOut : LongWord;
RetryCount : Byte;
AKNPort : TwzxUDPAKNPort;
IPProtocol : Byte;
TypeOfService : Byte; // 1460
MaxSegSize : Word;
Multicasting : Boolean; // New
PeerTryToDisconnect: Boolean;
SocketClosed : Boolean;
PacketRecInfo : TwzPacketReceive;
ErrorState : TwzStatus;
SocketState : Byte;
end;
tSocketHandle = Pointer to TwzSocket;
TTinaPriority = (TinaPrioMedium, TinaPrioLow, TinaPrioHigh, TinaPrioVeryHigh,
TinaPrioVeryLow, TinaPrioAuto, TinaPrioSuspend, TinaPrioResume);
TwzMainInit = Record
Gateway : tIPaddr;
SubnetMask : tIPaddr;
HWAddress : TMacAddr;
IPAddress : tIPaddr;
TimeOut : Word;
RetryCount : Byte;
ResponsePing : Boolean;
Prio : TTinaPriority;
end;
// Init des W5100
Function wzTINA_Init : Boolean;
Procedure wzTINA_Start;
Procedure wzTINA_Stop;
Procedure wzTINASetPriority(prio : TTinaPriority);
Procedure wzSetIPAddr(IPAddr, Mask : tIPaddr);
procedure wzSetHWAddr(MacAddr : TMacAddr);
Procedure wzSetGatewayAddr(IPAddr : tIPaddr);
Procedure wzSetRetryCount(Retry : Byte);
Procedure wzSetTimeOut(RetryTimeout : Word);
Procedure wzReset;
//Schnittstelle zum Hauptprogramm / Sockets
Function wzCreateSocket : tSocketHandle;
Procedure wzFreeSocket(SocketPtr : tSocketHandle);
Function wzConnect(SocketPtr : tSocketHandle) : Boolean;
Function wzDisConnect(SocketPtr : tSocketHandle) : boolean;
Function wzListen(SocketPtr : tSocketHandle) : Boolean;
Function wzInitSocket(SocketPtr : tSocketHandle) : Boolean;
//Procedure InitSocket(Sock : TTinaSocketNum; CompleteInit : Boolean);
Function wzReInitSocket(SocketPtr : tSocketHandle) : Boolean;
Function wzSendBuffer(SocketPtr : tSocketHandle; Buffer : Pointer; Len : Word) : Boolean;
Function wzReceiveBuffer(SocketPtr : tSocketHandle) : Word;
Function wzClientConnected(SocketPtr : tSocketHandle) : Boolean;
Function wzAcceptConnection(SocketPtr : tSocketHandle; YesNo : Boolean) : Boolean;
Function wzResumeReceive(SocketPtr : tSocketHandle) : Boolean;
Function wzPacketReceived(SocketPtr : tSocketHandle) : Boolean;
Function wzGetLastError(SocketPtr : tSocketHandle) : TwzStatus;
Function wzGetSocketState(SocketPtr : tSocketHandle) : TwzStatus;
// zum testen - später loeschen
Procedure wzGetIPAddress( IP : Pointer to TIpAddr);
Procedure wzGetGWAddress( IP : Pointer to TIpAddr);
Procedure wzGetMACAddress( MAC : Pointer to TMACAddr);
Procedure wzJobHandler;