00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <MCOOP.h>
00012 #include <AnalyzerAPI.h>
00013 #ifdef __GNUC__
00014 #include <ERA201D1.h>
00015 #endif
00016 #include <OPENR/OPower.h>
00017 #include <OPENR/OPENRAPI.h>
00018 #include "SystemCall.h"
00019 #include "GTAssert.h"
00020
00021 unsigned long SystemCall::getCurrentSystemTime() {
00022 SystemTime sysTime;
00023 GetSystemTime(&sysTime);
00024 return (sysTime.seconds * 1000 + sysTime.useconds / 1000);
00025 }
00026
00027 unsigned long SystemCall::getFreeMem()
00028 {
00029 size_t fmem;
00030 azrError err=AnalyzerGetSizeOfFreeMemory(&fmem);
00031 return (err==azrSUCCESS)?fmem:0;
00032 }
00033
00034 unsigned char SystemCall::getRemainingPower()
00035 {
00036 OPowerStatus stat;
00037 VERIFY(OPENR::GetPowerStatus(&stat)==0);
00038 unsigned char percent=stat.remainingCapacity;
00039 if (stat.robotStatus & orsbEX_POWER_CONNECTED) percent=100;
00040 if (stat.robotStatus & orsbPAUSE)
00041 {
00042 shutdown();
00043 }
00044 return percent;
00045 }
00046
00047 void SystemCall::reboot()
00048 {
00049 OBootCondition cond(obcbBOOT_TIMER, 0, obcbttRELATIVE);
00050 VERIFY(OPENR::Shutdown(cond)==0);
00051 }
00052
00053 void SystemCall::shutdown()
00054 {
00055 OBootCondition cond(0xFFFF);
00056 VERIFY(OPENR::Shutdown(cond)==0);
00057 char* tmp;
00058 tmp = etherStatusStr(0);
00059
00060 }
00061
00062 void SystemCall::getMacAddress(unsigned char address[6])
00063 {
00064 #ifdef __GNUC__
00065 EtherDriverGetMACAddressMsg msg;
00066 VERIFY(!ERA201D1_GetMACAddress(&msg));
00067 for(int i = 0; i < 6; ++i)
00068 address[i] = msg.address.octet[i];
00069 #else
00070 for(int i = 0; i < 6; ++i)
00071 address[i] = 0;
00072 #endif
00073 }
00074
00075 RobotDesign::Design SystemCall::getRobotDesign()
00076 {
00077 static bool initialized = false;
00078 static RobotDesign::Design design;
00079
00080 if (!initialized)
00081 {
00082 char robotDesign[20];
00083 VERIFY(OPENR::GetRobotDesign(robotDesign) == 0);
00084 if(!strcmp(robotDesign, "ERS-210"))
00085 design = RobotDesign::ERS210;
00086 else if(!strcmp(robotDesign, "ERS-7"))
00087 design = RobotDesign::ERS7;
00088 else
00089 design = RobotDesign::UNKNOWN;
00090 initialized = true;
00091 }
00092 return design;
00093 }