31#define WIN32_LEAN_AND_MEAN
44#include "../base/Evaluator-es.h"
46#include "../base/Evaluator.h"
49#include "../devices/PStream.h"
50#include "../utility/PError.h"
51#include "../utility/PEBLPath.h"
52#include "../utility/PEBLUtility.h"
55#include "../utility/PEBLHTTP.h"
57#include "../platforms/validator/PlatformNetwork.h"
59#include "../platforms/sdl/PlatformNetwork.h"
64#include "../devices/PParallelPort.h"
68#include "../platforms/sdl/SDLUtility.h"
84#if defined(PEBL_LINUX)
92const static int BSIZE =4096;
157 mystream->SetProperty(
"FILENAME",v1);
158 mystream->SetProperty(
"DIRECTION",
"READ");
187 std::string fname = (v1);
188 size_t i = fname.rfind(
".");
189 std::string base, ext;
192 base = fname.substr(0,i);
193 ext = fname.substr(i+1,fname.length());
202 int version = base[base.length()];
205 base = base.substr(0,base.length()-1);
220 mystream->SetProperty(
"FILENAME",v11);
221 mystream->SetProperty(
"DIRECTION",
"WRITE");
250 mystream->SetProperty(
"FILENAME",v1);
251 mystream->SetProperty(
"DIRECTION",
"WRITE");
272 mystream->SetProperty(
"FILENAME",v1);
273 mystream->SetProperty(
"DIRECTION",
"WRITE");
412 std::string tmpstring;
413 while(!mystream->
Eof())
417 if(strcmp(
"",tmpstring.c_str()) &&
418 strncmp(
"#",tmpstring.c_str(),1)
460 std::string tmp = plist->
Nth(2);
476 std::string tmpstring;
478 while(!myStream->
Eof())
482 if((strcmp(
"",tmpstring.c_str()) == 0) ||
483 (strncmp(
"#",tmpstring.c_str(),1)==0)
532 std::string tmpstring;
533 while(!mystream->
Eof())
537 if( strncmp(
"#",tmpstring.c_str(),1)
541 returnText = returnText +
Variant(tmpstring);
602 std::ifstream in(filename2.c_str(), ios_base::in|ios_base::binary);
603 std::ofstream out(filename1.c_str(), ios_base::out|ios_base::app|ios_base::binary);
612 PError::SignalFatalError(
"Unable to open file ["+filename1+
"]. Check permissions or determine whether directory exists.");
618 in.read(&buf[0],BSIZE);
619 out.write(&buf[0],in.gcount());
620 }
while (in.gcount()>0);
655 std::ifstream in(srcfile.c_str(), ios_base::in|ios_base::binary);
656 std::ofstream out(destfile.c_str(), ios_base::out|ios_base::binary);
665 PError::SignalFatalError(
"Unable to open file ["+destfile+
"]. Check permissions or determine whether directory exists.");
671 in.read(&buf[0],BSIZE);
672 out.write(&buf[0],in.gcount());
673 }
while (in.gcount()>0);
701 mynet->
SetHostIP((
unsigned int)(
long unsigned int)v1);
803 result = mynet->CheckForConnection();
832 mynet->CreateListener();
856 return Variant( mynet->Accept(timeout));
919 bool success = mynet->SendString(v2);
949 Variant ret = mynet->Receive(v2);
964 Variant add = mynet->GetIPAddress();
980 Variant add = mynet->GetMyIPAddress();
1014 PError::SignalWarning(
"Network support not compiled in. OpenNetworkListener returning 0 (failed).");
1025 PError::SignalWarning(
"Network support not compiled in. WaitForNetworkConnection returning 0 (failed).");
1077 PEBLHTTP http(v1,port);
1079 int out = http.GetHTTPFile(v3,v4);
1080 unsigned int status = http.GetStatus();
1099 PEBLHTTP http(v1,port);
1101 std::string out = http.GetHTTPText(v3);
1102 unsigned int status = http.GetStatus();
1125 PError::AssertType(v1,
PEAT_STRING,
"Error in first argument of function [PostHTTP(<host>,<port>,<page>,[<list>,<of>,<headers>],<body-args>)]: ");
1128 PError::AssertType(port,
PEAT_INTEGER,
"Error in second argument of function [PostHTTP(<host>,<port>,<page>,[<list>,<of>,<headers>],<body-args>)]: ");
1131 PError::AssertType(v3,
PEAT_STRING,
"Error in third argument of function [PostHTTP(<host>,<port>,<page>,[<list>,<of>,<headers>],<body-args>)]: ");
1135 PError::AssertType(v4,
PEAT_LIST,
"Error in fourth argument of function [PostHTTP(<host>,<port>,<page>,[<list>,<of>,<headers>],<body-args>)]: ");
1138 PError::AssertType(v5,
PEAT_STRING,
"Error in fifth argument of function [PostHTTP(<host>,<port>,<page>,[<list>,<of>,<headers>],<body-args>)]: ");
1142 PEBLHTTP http(v1,port);
1146 Variant out = http.PostHTTP(v3,v4,v5);
1156 PError::AssertType(v1,
PEAT_STRING,
"Error in first argument of function [PostHTTPFile(<host>,<port>,<page>,<list-of-args>,<filename>,<field>)]: ");
1159 PError::AssertType(port,
PEAT_INTEGER,
"Error in second argument of function [PostHTTPFile(<host>,<port>,<page>,<list-of-args>,<filename>,<field>)]: ");
1162 PError::AssertType(page,
PEAT_STRING,
"Error in third argument of function [PostHTTPFile(<host>,<port>,<page>,<list-of-args>,<filename>,<field>)]: ");
1166 PError::AssertType(args,
PEAT_LIST,
"Error in fourth argument of function [PostHTTPFile(<host>,<port>,<page>,<list-of-args>,<filename>,<field>)]: ");
1170 PError::AssertType(fname,
PEAT_STRING,
"Error in Fifth argument of function [PostHTTPFile(<host>,<port>,<page>,<list_of_args>,<filename>,<field>]: ");
1174 PError::AssertType(field,
PEAT_STRING,
"Error in Fifth argument of function [PostHTTPFile(<host>,<port>,<page>,<list-of-args>,<filename>,<field>]: ");
1177 PEBLHTTP http(v1,port);
1180 Variant out = http.PostMulti(page,args,fname,field);
1280 long int length = range->
Length();
1283 int newx=range->
Nth(1);
1284 int newy=range->
Nth(2);
1285 int neww=range->
Nth(3);
1286 int newh=range->
Nth(4);
1288 if(newx<0 || newx > myWin->
GetWidth() ||
1289 newy < 0 || newy > myWin->
GetHeight() ||
1290 neww < 0 || (neww + newx ) > myWin->
GetWidth() ||
1291 newh < 0 || (newh + newy) > myWin->
GetHeight())
1348 unsigned char control;
1355 printf(
"Could't get the port addresses\n");
1362 control = inb(
BASE + 2);
1364 outb(control & ~0x20,
BASE + 2);
1367 outb((
unsigned char) 255,
BASE);
1370 struct timespec a,b;
1373 int retval = nanosleep(&a,&b);
1378 control = inb(
BASE + 2);
1380 outb(control | 0x20,
BASE + 2);
1429Variant ConvertByteToList(
int x)
1466 buffer = buffer +
Variant(
"|");
1487 Variant bytelist = ConvertByteToList(x1);
1511 else if(v2 ==
"<output>")
1515 Variant(
"] in SetPPortState. Must be <input> or <output>."));
1539 string funcname =
"";
1569 else if(v2 ==
"<output>")
1573 Variant(
"] in SetPPortState. Must be <input> or <output>."));
1594 std::string mode =
"8N1";
1599 std::string mode = plist->
Nth(3);
1607 PComPort * cport =
dynamic_cast<PComPort*
>(tmp2.
get());
1630 PComPort * cport =
dynamic_cast<PComPort*
>(tmp1.
get());
1633 int retval= cport->GetByte(out);
1654 PComPort * cport =
dynamic_cast<PComPort*
>(tmp1.
get());
1656 unsigned char send = 0;
1667 cport->PSendByte(send);
static PEventLoop * mEventLoop
counted_ptr< PEBLObjectBase > GetObject() const
std::string FindFile(const string &filename)
PEvent Loop()
Initiates the looping tests.
void RegisterState(DeviceState *state, const std::string &function, Variant parameters)
PEBL_DummyEvent GetDummyEvent() const
Variant Nth(unsigned int n)
unsigned long Length() const
void PushBack(const Variant &v)
virtual void SetHostIP(unsigned int host)
virtual void SetHostName(std::string hostname)
virtual void SetPort(unsigned int port)
virtual void SetDataState(char x)
virtual void SetOutputMode()
virtual void SetPort(Variant v)
virtual void SetInputMode()
virtual char GetDataState()
std::string ReadLineClean()
std::string ReadToken(const char separator)
This reads up until the next separator token (or eof character)
void WriteString(const std::string &buffer)
This method just writes the char* string to the stream.
std::string GetString() const
PComplexData * GetComplexData() const
Variant SendData(Variant v)
Variant GetData(Variant v)
Variant AcceptNetworkConnection(Variant v)
Variant ConnectToHost(Variant v)
Variant FileReadText(Variant v)
This will read all of the text in a file into a single variant.
Variant GetMyIPAddress(Variant v)
Variant PostHTTPFile(Variant v)
Variant FileOpenAppend(Variant v)
This opens a filestream for writing, appending to end of file.
Variant FileReadWord(Variant v)
Variant GetIPAddress(Variant v)
Variant FileReadLine(Variant v)
Reads until the next line.
Variant FilePrint_(Variant v)
This prints contents of variant to file, without appending a newline.
Variant CopyFile(Variant v)
Variant FileOpenOverwrite(Variant v)
This opens a filestream for writing, replacing current file, without making a backup.
Variant FileReadCharacter(Variant v)
Reads a character from a file.
Variant EndOfFile(Variant v)
This detects if you are at the end of a file.
Variant WritePNG(Variant v)
Variant GetHTTPFile(Variant v)
Variant FileClose(Variant v)
This Closes a filestream.
Variant FileReadTable(Variant v)
Makes a list of lists, with each row contained in a list.
Variant EndOfLine(Variant v)
This detects if you are at the end of a line.
Variant FileOpenRead(Variant v)
This opens a filestream for reading.
Variant MD5File(Variant v)
Variant OpenNetworkListener(Variant v)
Variant GetHTTPText(Variant v)
Variant SetNetworkPort(Variant v)
Variant FileOpenWrite(Variant v)
This opens a filestream for writing.
Variant ConnectToIP(Variant v)
Variant CheckForNetworkConnection(Variant v)
Variant ParseJSON(Variant v)
Variant PostHTTP(Variant v)
Variant CloseNetworkConnection(Variant v)
Variant AppendFile(Variant v)
Variant WaitForNetworkConnection(Variant v)
Variant MD5Sum(Variant v)
Variant Format(Variant v)
Variant Print(Variant v)
This prints the argument with a newline character.
Variant Print_(Variant v)
This prints the argument without a linebreak at the end.
Variant FilePrint(Variant v)
This prints contents of variant to file, followed by a newline.
Variant FileReadList(Variant v)
Places all words in file into a list.
Variant ParseJSON(const std::string &text)
std::string MD5String(const std::string &text)
std::string MD5File(const std::string &filename)
Variant FileExists(std::string path)
Variant Tokenize(const char *line, char separator)
void SignalWarning(const std::string &message)
void AssertType(Variant v, int type, const std::string &outsidemessage)
void SignalFatalError(const std::string &message)