From: Jeremy Tan Date: Fri, 27 Sep 2013 11:39:23 +0000 (+0800) Subject: Merge branch 'master' of https://github.com/szmoore/MCTX3420.git X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=895c2f8fd6f66d858a091dc57cfddc45bfc27489;hp=5a395cb45f0d88960db25968e81c31246de34738;p=matches%2FMCTX3420.git Merge branch 'master' of https://github.com/szmoore/MCTX3420.git --- diff --git a/BBB code/Actuator_SetValue_real.c b/BBB code/Actuator_SetValue_real.c deleted file mode 100644 index fe5e3c5..0000000 --- a/BBB code/Actuator_SetValue_real.c +++ /dev/null @@ -1,69 +0,0 @@ -#include "pwm.h" - -char pin_dir = "/sys/class/gpio/gpio"; //move these - -/** Sets a GPIO pin to the desired value -* @param value - the value (1 or 0) to write to the pin -* @param pin_num - the number of the pin (refer to electronics team) -*/ - -//also need to export and set pin direction - -void SetPin(int value, int pin_num) { - int pin; - char buffer[10]; - char pin_path[40]; - snprintf(pin_path, sizeof(pin_path), "%s%d%s", pin_dir, pin_num, "/value"); //create pin path - pin = open(pin_path, O_WRONLY); - if (pin < 0) perror("Failed to open pin"); - if (value) { - strncpy(buffer, "1", ARRAY_SIZE(buffer) - 1); - } - else { - strncpy(buffer, "0", ARRAY_SIZE(buffer) - 1); - } - int write = write(pin, buffer, strlen(buffer)); - if (write < 0) perror ("Failed to write to pin"); - close(pin); -} - -//TODO: Be able to write to multiple PWM modules - easy to change -// but current unsure about how many PWM signals we need - -/** - * Set an Actuator value - * @param a - The Actuator - * @param value - The value to set - */ -void Actuator_SetValue(Actuator * a, double value) -{ - // Set time stamp - struct timeval t; - gettimeofday(&t, NULL); - - DataPoint d = {TIMEVAL_DIFF(t, g_options.start_time), value}; - switch (a->id) - { - case ACTUATOR_TEST0: //Pressure regulator example - requires PWM, 0-1000kPa input - { - if (pwm_active == 0) { //if inactive, start the pwm module - pwm_init(); - pwm_start(); - pwm_set_period(FREQ); //50Hz defined in pwm header file - } - if(value >= 0 && value <= 700) { - double duty = value/1000 * 100; //convert pressure to duty percentage - pwm_set_duty((int)duty); //set duty percentage for actuator - } - } break; - case ACTUATOR_TEST1: - { - SetPin(value, 1); //Digital switch example - "1" is the pin number, to be specified by electronics team - } break; - } - - Log(LOGDEBUG, "Actuator %s set to %f", g_actuator_names[a->id], value); - - // Record the value - Data_Save(&(a->data_file), &d, 1); -} \ No newline at end of file diff --git a/BBB code/Actuator_SetValue_real2.c b/BBB code/Actuator_SetValue_real2.c deleted file mode 100644 index 791de1e..0000000 --- a/BBB code/Actuator_SetValue_real2.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "gpio.h" -#include "pwm.h" - -void Actuator_SetValue(Actuator * a, double value) -{ - // Set time stamp - struct timeval t; - gettimeofday(&t, NULL); - - DataPoint d = {TIMEVAL_DIFF(t, g_options.start_time), value}; - switch (a->id) - { - case ACTUATOR_TEST0: //LED actuator test code, should blink onboard LED next to Ethernet port - FILE *LEDHandle = NULL; //code reference: http://learnbuildshare.wordpress.com/2013/05/19/beaglebone-black-controlling-user-leds-using-c/ - char *LEDBrightness = "/sys/class/leds/beaglebone\:green\:usr0/brightness"; - if(value == 1) { - if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL) { - fwrite("1", sizeof(char), 1, LEDHandle); - fclose(LEDHandle); - } - else if(value == 0) { - if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL) { - fwrite("0", sizeof(char), 1, LEDHandle); - fclose(LEDHandle); - } - else perror("Pin value should be 1 or 0"); - break; - case ACTUATOR_TEST1: - // Quick actuator function for testing pins - // GPIOPin can be either passed as an argument, or defined here (as pins won't change) - // First way is better and more generalised - int GPIOPin = 13; - // Modify this to only export on first run, unexport on shutdown - pinExport(setValue, GPIOString); - pinDirection(GPIODirection, setValue); - pinSet(value, GPIOValue, setValue); - pinUnexport(setValue, GPIOString); - break; - case ACTUATOR_TEST2: - if (pwminit == 0) { //if inactive, start the pwm module - pwm_init(); - } - if (pwmstart == 0) { - pwm_start(); - pwm_set_period(FREQ); //50Hz defined in pwm header file - } - if(value >= 0 && value <= 1000) { - double duty = value/1000 * 100; //convert pressure to duty percentage - pwm_set_duty((int)duty); //set duty percentage for actuator - } - } - Log(LOGDEBUG, "Actuator %s set to %f", g_actuator_names[a->id], value); - // Record the value - Data_Save(&(a->data_file), &d, 1); -} \ No newline at end of file diff --git a/BBB code/Adafruit BBIO (c).rar b/BBB code/Adafruit BBIO (c).rar deleted file mode 100644 index 92d6c47..0000000 Binary files a/BBB code/Adafruit BBIO (c).rar and /dev/null differ diff --git a/BBB code/Adafruit_BBIO-0.0.17.tar.gz b/BBB code/Adafruit_BBIO-0.0.17.tar.gz deleted file mode 100644 index 2f4023f..0000000 Binary files a/BBB code/Adafruit_BBIO-0.0.17.tar.gz and /dev/null differ diff --git a/BBB code/GetData_real.c b/BBB code/GetData_real.c deleted file mode 100644 index c724e62..0000000 --- a/BBB code/GetData_real.c +++ /dev/null @@ -1,61 +0,0 @@ -#include "gpio.h" - -/** - * Read a DataPoint from a Sensor; block until value is read - * @param id - The ID of the sensor - * @param d - DataPoint to set - * @returns True if the DataPoint was different from the most recently recorded. - */ -bool Sensor_Read(Sensor * s, DataPoint * d) -{ - - // Set time stamp - struct timeval t; - gettimeofday(&t, NULL); - d->time_stamp = TIMEVAL_DIFF(t, g_options.start_time); - - // Read value based on Sensor Id - switch (s->id) - { - case ANALOG_TEST0: - d->value = ADCRead(0); //ADC #0 on the Beaglebone - break; - case ANALOG_TEST1: - { - d->value = ADCRead(1); - break; - } - case ANALOG_FAIL0: - d->value = (double)(rand() % 6) * -( rand() % 2) / ( rand() % 100 + 1); - //Gives a value between -5 and 5 - break; - case DIGITAL_TEST0: - d->value = pinRead(0); //replace 0 with correct pin number - break; - case DIGITAL_TEST1: - d->value = pinRead(1); //replace 1 with correct pin number - break; - case DIGITAL_FAIL0: - if( rand() % 100 > 98) - d->value = 2; - d->value = rand() % 2; - //Gives 0 or 1 or a 2 every 1/100 times - break; - default: - Fatal("Unknown sensor id: %d", s->id); - break; - } - usleep(100000); // simulate delay in sensor polling - - // Perform sanity check based on Sensor's ID and the DataPoint - Sensor_CheckData(s->id, d->value); - - // Update latest DataPoint if necessary - bool result = (d->value != s->newest_data.value); - if (result) - { - s->newest_data.time_stamp = d->time_stamp; - s->newest_data.value = d->value; - } - return result; -} \ No newline at end of file diff --git a/BBB code/gpio.c b/BBB code/gpio.c deleted file mode 100644 index 65f1a51..0000000 --- a/BBB code/gpio.c +++ /dev/null @@ -1,128 +0,0 @@ -#include "gpio.h" - -void pinExport(int GPIOPin) { - FILE *myOutputHandle = NULL; - char GPIOString[4]; - char setValue[4]; - sprintf(GPIOString, "%d", GPIOPin); - if ((myOutputHandle = fopen(exportPath, "ab")) == NULL){ - Log(LOGERR, "Unable to export GPIO pin %f\n", GPIOPin); - } - strcpy(setValue, GPIOString); - fwrite(&setValue, sizeof(char), 2, myOutputHandle); - fclose(myOutputHandle); -} - -void pinDirection(int GPIOPin, int io) { - char setValue[4]; - char GPIODirection[64]; - FILE *myOutputHandle = NULL; - snprintf(GPIODirection, sizeof(GPIODirection), "%s%d%s", directionPath, GPIOPin, "/direction"); - if ((myOutputHandle = fopen(GPIODirection, "rb+")) == NULL){ - Log(LOGERR, "Unable to open direction handle for pin %f\n", GPIOPin); - } - if (io == 1) { - strcpy(setValue,"out"); - fwrite(&setValue, sizeof(char), 3, myOutputHandle); - else if (io == 0) { - strcpy(setValue,"in"); - fwrite(&setValue, sizeof(char), 2, myOutputHandle); - else Log(LOGERR, "GPIO direction must be 1 or 0\n"); - fclose(myOutputHandle); -} - -void pinSet(double value, int GPIOPin) { - int val = (int)value; - char GPIOValue[64]; - char setValue[4]; - FILE *myOutputHandle = NULL; - snprintf(GPIOValue, sizeof(GPIOValue), "%s%d%s", valuePath, GPIOPin, "/value"); - if (val == 1) { - if ((myOutputHandle = fopen(GPIOValue, "rb+")) == NULL){ - Log(LOGERR, "Unable to open value handle for pin %f\n", GPIOPin); - } - strcpy(setValue, "1"); // Set value high - fwrite(&setValue, sizeof(char), 1, myOutputHandle); - } - else if (val == 0){ - if ((myOutputHandle = fopen(GPIOValue, "rb+")) == NULL){ - Log(LOGERR, "Unable to open value handle for pin %f\n", GPIOPin); - } - strcpy(setValue, "0"); // Set value low - fwrite(&setValue, sizeof(char), 1, myOutputHandle); - } - else Log(LOGERR, "GPIO value must be 1 or 0\n"); - fclose(myOutputHandle); -} - -/** Open an ADC and return the voltage value from it -* @param adc_num - ADC number, ranges from 0 to 7 on the Beaglebone - @return the converted voltage value if successful -*/ - -//TODO: create a function to lookup the ADC or pin number instead of manually -// specifying it here (so we can keep all the numbers in one place) - -int ADCRead(int adc_num) -{ - char adc_path[64]; - snprintf(adc_path, sizeof(adc_path), "%s%d", ADCPath, adc_num); // Construct ADC path - int sensor = open(adc_path, O_RDONLY); - char buffer[64]; // I think ADCs are only 12 bits (0-4096), buffer can probably be smaller - int read = read(sensor, buffer, sizeof(buffer); - if (read != -1) { - buffer[read] = NULL; - int value = atoi(buffer); - double convert = (value/4096) * 1000; // Random conversion factor, will be different for each sensor (get from datasheets) - // lseek(sensor, 0, 0); (I think this is uneeded as we are reopening the file on each sensor read; if sensor is read continously we'll need this - close(sensor); - return convert; - } - else { - Log(LOGERR, "Failed to get value from ADC %f\n", adc_num); - close(sensor); - return -1; - } -} - -/** Open a digital pin and return the value from it -* @param pin_num - pin number, specified by electronics team - @return 1 or 0 if reading was successful -*/ - -int pinRead(int GPIOPin) -{ - char GPIOValue[64]; - snprintf(GPIOValue, sizeof(GPIOValue), "%s%d%s", valuePath, GPIOPin, "/value"); //construct pin path - int pin = open(GPIOValue, O_RDONLY); - char ch; - lseek(fd, 0, SEEK_SET); - int read = read(pin, &ch, sizeof(ch); - if (read != -1) { - if (ch != '0') { - close(pin); - return 1; - } - else { - close(pin); - return 0; - } - else { - Log(LOGERR, "Failed to get value from pin %f\n", GPIOPin); - close(pin); - return -1; - } -} - -void pinUnexport(int GPIOPin) { - char setValue[4]; - char GPIOString[4]; - sprintf(GPIOString, "%d", GPIOPin); - FILE *myOutputHandle = NULL; - if ((myOutputHandle = fopen(unexportPath, "ab")) == NULL) { - Log(LOGERR, "Couldn't unexport GPIO pin %f\n", GPIOPin); - } - strcpy(setValue, GPIOString); - fwrite(&setValue, sizeof(char), 2, myOutputHandle); - fclose(myOutputHandle); -} \ No newline at end of file diff --git a/BBB code/gpio.h b/BBB code/gpio.h deleted file mode 100644 index 1da8470..0000000 --- a/BBB code/gpio.h +++ /dev/null @@ -1,24 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define exportPath "/sys/class/gpio/export"; -#define unexportPath "/sys/class/gpio/unexport"; -#define valuePath "/sys/class/gpio/gpio"; -#define directionPath "/sys/class/gpio/gpio"; -#define ADCPath "/sys/devices/platform/tsc/ain"; - -void pinExport(int GPIOPin); -void pinDirection(int GPIOPin, int io); -void pinSet(double value, int GPIOPin); -void pinUnexport(int GPIOPin); -int pinRead(int GPIOPin); -int ADCRead(int adc_num); \ No newline at end of file diff --git a/BBB code/old/ActuatorHandler_real.c b/BBB code/old/ActuatorHandler_real.c deleted file mode 100644 index 7e7e0ec..0000000 --- a/BBB code/old/ActuatorHandler_real.c +++ /dev/null @@ -1,82 +0,0 @@ -#include "pwm.h" - -char pin_dir = "/sys/class/gpio/gpio"; -int pwm_active = 0; - -/** Sets a GPIO pin to the desired value -* @param value - the value (1 or 0) to write to the pin -* @param pin_num - the number of the pin (refer to electronics team) -*/ - -void SetPin(int value, int pin_num) { - int pin; - char buffer[10]; - char pin_path[40]; - snprintf(pin_path, sizeof(pin_path), "%s%d%s", pin_dir, pin_num, "/value"); //create pin path - pin = open(pin_path, O_WRONLY); - if (pin < 0) perror("Failed to open pin"); - if (value) { - strncpy(buffer, "1", ARRAY_SIZE(buffer) - 1); - } - else { - strncpy(buffer, "0", ARRAY_SIZE(buffer) - 1); - } - int write = write(pin, buffer, strlen(buffer)); - if (write < 0) perror ("Failed to write to pin"); - close(pin); -} - -//TODO: Be able to write to multiple PWM modules - easy to change -// but current unsure about how many PWM signals we need - -void ActuatorHandler(FCGIContext *context, ActuatorId id, const char *set_value) { - char *ptr; - - switch(id) { //Add new actuators here - case ACT_PRESSURE: //Suppose is pressure regulator. 0-700 input (kPa) - { - if (pwm_active == 0) { //if inactive, start the pwm module - pwm_init(); - pwm_start(); - pwm_set_period(FREQ); //50Hz defined in pwm header file - } - int value = strtol(set_value, &ptr, 10); - //Beaglebone code - if(value >= 0 && value <= 700) { - double duty = value/700 * 100; //convert pressure to duty percentage - pwm_set_duty((int)duty); //set duty percentage for actuator - } - //server code - if (*ptr == '\0' && value >= 0 && value <= 700) { - FCGI_BeginJSON(context, STATUS_OK); - FCGI_JSONKey("description"); - FCGI_JSONValue("\"Set pressure to %d kPa!\"", value); - FCGI_EndJSON(); - } else { - FCGI_RejectJSONEx(context, - STATUS_ERROR, "Invalid pressure specified."); - } - } break; - case ACT_SOLENOID1: - { - int value = strtol(set_value, &ptr, 10); - if (*ptr == '\0') { - //code to set pin to value - SetPin(value, 1); //"1" will need to be changed to pin numbers decided by electronics team - //code for server - const char *state = "off"; - if (value) - state = "on"; - FCGI_BeginJSON(context, STATUS_OK); - FCGI_JSONKey("description"); - FCGI_JSONValue("\"Solenoid 1 turned %s!\"", state); - FCGI_EndJSON(); - } else { - FCGI_RejectJSON(context, "Invalid actuator value specified"); - } - } break; - default: - FCGI_RejectJSONEx(context, - STATUS_ERROR, "Invalid actuator id specified."); - } -} \ No newline at end of file diff --git a/BBB code/old/beagleboard sensors notes.docx b/BBB code/old/beagleboard sensors notes.docx deleted file mode 100644 index 746600c..0000000 Binary files a/BBB code/old/beagleboard sensors notes.docx and /dev/null differ diff --git a/BBB code/old/simple code examples.c b/BBB code/old/simple code examples.c deleted file mode 100644 index 0a973ba..0000000 --- a/BBB code/old/simple code examples.c +++ /dev/null @@ -1,54 +0,0 @@ -//Code to blink an LED - just to illustrate that it's pretty easy -//Only important thing is which name to address the LED by - -#include -#include - -using namespace std; - -int main(int argc, char** argv) { - FILE *LEDHandle = NULL; - char *LEDBrightness = "/sys/class/leds/beaglebone:green:usr0/brightness"; - printf("\nStarting LED blink program wooo!\n"); - while(1){ - if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL){ - fwrite("1", sizeof(char), 1, LEDHandle); - fclose(LEDHandle); - } - sleep(1); - if((LEDHandle = fopen(LEDBrightness, "r+")) != NULL){ - fwrite("0", sizeof(char), 1, LEDHandle); - fclose(LEDHandle); - } - sleep(1); - } - return 0; -} - -//Sample code that should read a pressure sensor pin (conversion factors -//are just random numbers). Again pretty simple. - -#include STUFF - -double pressure(char *string) { - int value = atoi(string); - double millivolts = (value / 4096.0) * 1800; //convert input to volts - double pressure = (millivolts - 500.0) / 10.0; //convert volts to pressure - return pressure; -} - -void main() { - int fd = open("/sys/devices/platform/tsc/ain2", O_RDONLY); //open pin signal - while (1) { - char buffer[1024]; - int ret = read(fd, buffer, sizeof(buffer)); //get data - if (ret != -1) { - buffer[ret] = NULL; - double kpa = pressure(buffer); - printf("digital value: %s kilopascals: %f\n", buffer, kpa); - lseek(fd, 0, 0); - } - sleep(1); - } - close(fd); -} \ No newline at end of file diff --git a/BBB code/pwm.c b/BBB code/pwm.c deleted file mode 100644 index b86b07e..0000000 --- a/BBB code/pwm.c +++ /dev/null @@ -1,83 +0,0 @@ -#include "pwm.h" - -/* Initialize PWM : -1/ mmap /dev/mem to have write access to system clock -2/ enable system clock (0x0 = disabled, 0x02 = enabled) -3/ set correct pin MUX - -can modify pwm variables through virtual filesystem: -"/sys/class/pwm/ehrpwm.1:0/..." - -pwm drivers reference: -http://processors.wiki.ti.com/index.php/AM335x_PWM_Driver%27s_Guide */ - -static int pwminit = 0; -static int pwmstart = 0; - -void pwm_init(void) { - FILE *pwm_mux; - int i; - volatile uint32_t *epwmss1; - - int fd = open("/dev/mem", O_RDWR); - - if(fd < 0) - { - printf("Can't open /dev/mem\n"); - exit(1); - } - - epwmss1 = (volatile uint32_t *) mmap(NULL, LENGTH, PROT_READ|PROT_WRITE, MAP_SHARED, fd, START); - if(epwmss1 == NULL) - { - printf("Can't mmap\n"); - exit(1); - } - else - { - epwmss1[OFFSET_1 / sizeof(uint32_t)] = 0x2; - } - close(fd); - pwminit = 1; - pwm_mux = fopen(PWMMuxPath, "w"); - fprintf(pwm_mux, "6"); // pwm is mux mode 6 - fclose(pwm_mux); -} - -//can change filepath of pwm module "/ehrpwm.%d:0/" by passing %d as argument -//depends how many pwm modules we have to run -//TODO: - -void pwm_start(void) { - FILE *pwm_run; - pwm_run = fopen(PWMRunPath, "w"); - fprintf(pwm_run, "1"); - fclose(pwm_run); - pwmstart = 1; -} - -void pwm_stop(void) { - FILE *pwm_run; - pwm_run = fopen(PWMRunPath, "w"); - fprintf(pwm_run, "0"); - fclose(pwm_run); - pwmstart = 0; -} - -//duty_percent is just a regular percentage (i.e. 50 = 50%) - -void pwm_set_duty(int duty_percent) { - FILE *pwm_duty; - pwm_duty = fopen(PWMDutyPath, "w"); - fprintf(pwm_duty, "%d", duty_percent); - fclose(pwm_duty); -} - -//freq is just normal frequency (i.e. 100 = 100Hz) - -void pwm_set_period(int freq) { - FILE *pwm_period; - pwm_period = fopen(PWMFreqPath, "w"); - fprintf(pwm_period, "%d", freq); - fclose(pwm_period); -} \ No newline at end of file diff --git a/BBB code/pwm.h b/BBB code/pwm.h deleted file mode 100644 index 2c9411b..0000000 --- a/BBB code/pwm.h +++ /dev/null @@ -1,26 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define START 0x44e00000 // see datasheet of AM335x -#define LENGTH 1024 -#define OFFSET_1 0xcc // offset of PWM1 clock (see datasheet of AM335x p.1018) -#define FREQ 50 //50Hz pwm frequency for pressure regulator -#define PWMMuxPath "/sys/kernel/debug/omap_mux/gpmc_a2" -#define PWMRunPath "/sys/class/pwm/ehrpwm.1:0/run" -#define PWMDutyPath "/sys/class/pwm/ehrpwm.1:0/duty_percent" -#define PWMFreqPath "/sys/class/pwm/ehrpwm.1:0/period_freq" - -void pwm_init(void); -void pwm_start(void); -void pwm_stop(void); -void pwm_set_duty(int duty_percent); -void pwm_set_period(int freq); \ No newline at end of file diff --git a/MCTX3420.pod b/MCTX3420.pod deleted file mode 100644 index c319c2f..0000000 Binary files a/MCTX3420.pod and /dev/null differ diff --git a/MCTX3420.xml b/MCTX3420.xml deleted file mode 100644 index d5b2a14..0000000 --- a/MCTX3420.xml +++ /dev/null @@ -1,5501 +0,0 @@ - - - 9 - MCTX3420 - MCTX3420 - No one! - 1 - 2013-08-05T08:00:00 - 2013-10-28T17:00:00 - 1 - 0 - 2 - $ - 0 - 1 - 16:00:00 - 01:00:00 - 480 - 2400 - 20 - 0 - 2 - 10 - 15 - 7 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 1 - 2013-08-18T21:21:00 - 1 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - - - - 1 - Standard - 1 - - - 1 - 0 - - - 2 - 1 - - - 08:00:00 - 12:00:00 - - - 13:00:00 - 17:00:00 - - - - - 3 - 1 - - - 08:00:00 - 12:00:00 - - - 13:00:00 - 17:00:00 - - - - - 4 - 1 - - - 08:00:00 - 12:00:00 - - - 13:00:00 - 17:00:00 - - - - - 5 - 1 - - - 08:00:00 - 12:00:00 - - - 13:00:00 - 17:00:00 - - - - - 6 - 1 - - - 08:00:00 - 12:00:00 - - - 13:00:00 - 17:00:00 - - - - - 7 - 0 - - - - - 2 - 24 Hours - 1 - - - 1 - 1 - - - 00:00:00 - 00:00:00 - - - - - 2 - 1 - - - 00:00:00 - 00:00:00 - - - - - 3 - 1 - - - 00:00:00 - 00:00:00 - - - - - 4 - 1 - - - 00:00:00 - 00:00:00 - - - - - 5 - 1 - - - 00:00:00 - 00:00:00 - - - - - 6 - 1 - - - 00:00:00 - 00:00:00 - - - - - 7 - 1 - - - 00:00:00 - 00:00:00 - - - - - - - 3 - Night Shift - 1 - - - 1 - 0 - - - 2 - 1 - - - 23:00:00 - 00:00:00 - - - - - 3 - 1 - - - 00:00:00 - 03:00:00 - - - 04:00:00 - 08:00:00 - - - 23:00:00 - 00:00:00 - - - - - 4 - 1 - - - 00:00:00 - 03:00:00 - - - 04:00:00 - 08:00:00 - - - 23:00:00 - 00:00:00 - - - - - 5 - 1 - - - 00:00:00 - 03:00:00 - - - 04:00:00 - 08:00:00 - - - 23:00:00 - 00:00:00 - - - - - 6 - 1 - - - 00:00:00 - 03:00:00 - - - 04:00:00 - 08:00:00 - - - 23:00:00 - 00:00:00 - - - - - 7 - 1 - - - 00:00:00 - 03:00:00 - - - 04:00:00 - 08:00:00 - - - - - - - 4 - Sam - 0 - 1 - - - 5 - Jeremy - 0 - 1 - - - 6 - Callum - 0 - 1 - - - 7 - James - 0 - 1 - - - 8 - Justin - 0 - 1 - - - 9 - Rowan - 0 - 1 - - - 10 - Sensors Team - 0 - 1 - - - 11 - Pneumatics Team - 0 - 1 - - - 12 - Mounting Team - 0 - 1 - - - 13 - Case Team - 0 - 1 - - - 14 - Electronics Team - 0 - 1 - - - 15 - Software Team - 1 - - - - - 1 - 1 - Confirmation of Details / Planning - 0 - 0 - 2013-08-18T20:44:00 - - 1 - 1 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 2 - 2 - Confirm server hardware - 0 - 0 - 2013-08-18T20:44:00 - - 1.1 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 3 - 3 - Specify server requirements - 0 - 0 - 2013-08-18T20:44:00 - - 1.1.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 4 - 4 - Storage requirements - 0 - 0 - 2013-08-18T20:46:00 - - 1.1.1.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 5 - 5 - Confirm sensor selection - 0 - 0 - 2013-08-18T20:44:00 - - 1.2 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 6 - 6 - Determine requirements on sensor capabilities - 0 - 0 - 2013-08-18T20:44:00 - - 1.2.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 7 - 7 - Determine requirements on sensor outputs - 0 - 0 - 2013-08-18T20:44:00 - - 1.2.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 8 - 8 - Requirements for electronics (amplification, connections) - 0 - 0 - 2013-08-18T20:44:00 - - 1.2.2.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 9 - 9 - Requirements for software drivers - 0 - 0 - 2013-08-18T20:44:00 - - 1.2.2.2 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 10 - 10 - Confirm actuator selection - 0 - 0 - 2013-08-18T20:52:00 - - 1.3 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 11 - 11 - Determine requirements on actuator capabilities - 0 - 0 - 2013-08-18T20:52:00 - - 1.3.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 12 - 12 - Determine requirements on actuator outputs - 0 - 0 - 2013-08-18T20:54:00 - - 1.3.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 13 - 13 - Requirements for electronics (amplification, connections) - 0 - 0 - 2013-08-18T20:54:00 - - 1.3.2.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 14 - 14 - Requirements for software drivers - 0 - 0 - 2013-08-18T20:54:00 - - 1.3.2.2 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 15 - 15 - Complete list of tasks - 0 - 0 - 2013-08-18T20:44:00 - - 1.4 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 16 - 16 - Each team create list - 0 - 0 - 2013-08-18T20:44:00 - - 1.4.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 17 - 17 - Teams to agree on timeline - 0 - 0 - 2013-08-18T20:44:00 - - 1.4.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 18 - 18 - Software Team Collaboration - 0 - 0 - 2013-08-18T20:54:00 - - 1.5 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 19 - 19 - Determine languages / libraries to be used - 0 - 0 - 2013-08-18T20:55:00 - - 1.5.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 20 - 20 - Agree on responsibilities within team - 0 - 0 - 2013-08-18T20:44:00 - - 1.5.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 21 - 21 - Make hardware selections - 0 - 0 - 2013-08-18T20:44:00 - - 1.6 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 22 - 22 - Housing/Enclosure for server hardware - 0 - 0 - 2013-08-18T20:44:00 - - 1.6.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 23 - 23 - Cable management - 0 - 0 - 2013-08-18T20:44:00 - - 1.6.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 24 - 24 - Attachments/Connectors - 0 - 0 - 2013-08-18T20:44:00 - - 1.6.3 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 25 - 25 - OK selections with client - 0 - 0 - 2013-08-18T20:44:00 - - 1.6.4 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 26 - 26 - Basic Software Functionality - 0 - 0 - 2013-08-18T20:44:00 - - 2 - 1 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 27 - 27 - Framework for software to transfer data to client - 0 - 0 - 2013-08-18T20:49:00 - - 2.1 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 28 - 28 - Serverside API for jQuery to interface with - 0 - 0 - 2013-08-18T20:50:00 - - 2.1.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 29 - 29 - Dummy functions for sensor polling / actuator control - 0 - 0 - 2013-08-18T20:52:00 - - 2.1.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 30 - 30 - Threaded program to combine hardware control with API - 0 - 0 - 2013-08-18T20:50:00 - - 2.1.3 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 31 - 31 - Graph sensors in GUI in real time - 0 - 0 - 2013-08-18T20:44:00 - - 2.2 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 32 - 32 - Simulated sensor readings - 0 - 0 - 2013-08-18T20:44:00 - - 2.2.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 33 - 33 - Actual sensor readings - 0 - 0 - 2013-08-18T20:44:00 - - 2.2.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 34 - 34 - Calibrate sensors - 0 - 0 - 2013-08-18T20:44:00 - - 2.2.2.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 35 - 35 - Control Actuators from GUI in real time - 0 - 0 - 2013-08-18T20:44:00 - - 2.3 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 36 - 36 - Simulated actuators - 0 - 0 - 2013-08-18T20:44:00 - - 2.3.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 37 - 37 - Actual actuators - 0 - 0 - 2013-08-18T20:44:00 - - 2.3.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 38 - 38 - Calibrate actuators - 0 - 0 - 2013-08-18T20:44:00 - - 2.3.2.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 39 - 39 - Save data on server to be downloaded by client later - 0 - 0 - 2013-08-18T20:44:00 - - 2.4 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 40 - 40 - Software fail safes - 0 - 0 - 2013-08-18T20:44:00 - - 2.5 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 41 - 41 - Watchdog program to handle software crash - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.1 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 42 - 42 - Monitor safety switches - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.2 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 43 - 43 - Ensure there is also a hardware failsafe! - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.2.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 44 - 44 - Detect failure of hardware - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.3 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 45 - 45 - Safety/Sanity checks on sensor values - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.3.1 - 4 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 46 - 46 - Cope with loss of network connection to GUI - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.4 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 47 - 47 - Cope with insufficient memory - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.5 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 48 - 48 - Cope with insufficient disk space to save results on server - 0 - 0 - 2013-08-18T20:44:00 - - 2.5.6 - 3 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 49 - 49 - Advanced Software Functionality - 0 - 0 - 2013-08-18T20:44:00 - - 3 - 1 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 50 - 50 - Monitor system with camera - 0 - 0 - 2013-08-18T20:47:00 - - 3.1 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 51 - 51 - Use GUI to setup automated data collection - 0 - 0 - 2013-08-18T20:44:00 - - 3.2 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 52 - 52 - Use GUI to download data collected whilst GUI was not connected - 0 - 0 - 2013-08-18T20:44:00 - - 3.3 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 53 - 53 - Secure connection (HTTPS) - 0 - 0 - 2013-08-18T20:44:00 - - 3.4 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 54 - 54 - Single user only login system - 0 - 0 - 2013-08-18T20:44:00 - - 3.5 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 55 - 55 - Advanced Safety - 0 - 0 - 2013-08-18T20:44:00 - - 3.6 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 56 - 56 - Optional Software Functionality - 0 - 0 - 2013-08-18T20:44:00 - - 4 - 1 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 57 - 57 - Improve GUI design & layout - 0 - 0 - 2013-08-18T20:44:00 - - 4.1 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 58 - 58 - Debug software - 0 - 0 - 2013-08-18T20:44:00 - - 5 - 1 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 59 - 59 - Test analogue sensor outputs match values recorded by software - 0 - 0 - 2013-08-18T20:48:00 - - 5.1 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 60 - 60 - Test simulated values transferred to GUI are unaltered - 0 - 0 - 2013-08-18T20:44:00 - - 5.2 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 61 - 61 - Ensure all functions provide correct output - 0 - 0 - 2013-08-18T20:44:00 - - 5.3 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 62 - 62 - Ensure software is memory leak free - 0 - 0 - 2013-08-18T20:44:00 - - 5.4 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 63 - 63 - Assemble system - 0 - 0 - 2013-08-18T20:44:00 - - 6 - 1 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 64 - 64 - Mounting server hardware - 0 - 0 - 2013-08-18T20:44:00 - - 6.1 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 65 - 65 - Case for server hardware - 0 - 0 - 2013-08-18T20:44:00 - - 6.2 - 2 - 500 - 2013-08-05T08:00:00 - 2013-08-05T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 0 - 0 - 0 - 28800000 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 66 - 66 - Profit - 0 - 0 - 2013-08-18T20:44:00 - - 7 - 1 - 500 - 2013-10-28T08:00:00 - 2013-10-28T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 1 - 1 - 0 - 0 - 0 - 2 - PT8H0M0S - 4 - -1 - 2013-10-28T08:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - 67 - 67 - ??? - 0 - 0 - 2013-08-18T20:44:00 - - 7.1 - 2 - 500 - 2013-10-28T08:00:00 - 2013-10-28T17:00:00 - PT8H0M0S - 39 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 1 - 0 - 0 - 0 - 2 - PT8H0M0S - 0 - -1 - 1970-01-01T00:00:00 - 0 - 0 - 0 - 7 - 0 - 0 - 0 - 0 - 1 - 0 - - - - - 0 - 0 - Unassigned - 1 - 0 - U - - - 1 - 1 - 0 - 2013-08-05T08:00:00 - 2013-10-28T17:00:00 - 0 - 3 - 3 - 3 - 0 - 0 - 0 - 0 - - - - 1 - 1 - Sam - 1 - 0 - S - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 4 - 0 - 0 - 0 - 0 - - - - 2 - 2 - Jeremy - 1 - 0 - J - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 5 - 0 - 0 - 0 - 0 - - - - 3 - 3 - Callum - 1 - 0 - C - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 6 - 0 - 0 - 0 - 0 - - - - 4 - 4 - James - 1 - 0 - J - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 7 - 0 - 0 - 0 - 0 - - - - 5 - 5 - Justin - 1 - 0 - J - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 8 - 0 - 0 - 0 - 0 - - - - 6 - 6 - Rowan - 1 - 0 - R - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 9 - 0 - 0 - 0 - 0 - - - - 7 - 7 - Sensors Team - 1 - 0 - S - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 10 - 0 - 0 - 0 - 0 - - - - 8 - 8 - Pneumatics Team - 1 - 0 - P - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 11 - 0 - 0 - 0 - 0 - - - - 9 - 9 - Mounting Team - 1 - 0 - M - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 12 - 0 - 0 - 0 - 0 - - - - 10 - 10 - Case Team - 1 - 0 - C - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 13 - 0 - 0 - 0 - 0 - - - - 11 - 11 - Electronics Team - 1 - 0 - E - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 14 - 0 - 0 - 0 - 0 - - - - 12 - 12 - Software Team - 1 - 0 - S - - - 1 - 1 - 0 - 0 - 3 - 3 - 3 - 15 - 0 - 0 - 0 - 0 - - - - - - 1 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT120H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT120H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-06T16:00:00 - 2013-08-07T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-07T16:00:00 - 2013-08-08T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-08T16:00:00 - 2013-08-09T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-09T16:00:00 - 2013-08-10T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-12T16:00:00 - 2013-08-13T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-13T16:00:00 - 2013-08-14T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-14T16:00:00 - 2013-08-15T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-15T16:00:00 - 2013-08-16T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-16T16:00:00 - 2013-08-17T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-19T16:00:00 - 2013-08-20T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-20T16:00:00 - 2013-08-21T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-21T16:00:00 - 2013-08-22T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-22T16:00:00 - 2013-08-23T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-08-23T16:00:00 - 2013-08-24T09:00:00 - 3 - PT8H0M0S - - - - 2 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 3 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 4 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 5 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 6 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 7 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 8 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 9 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 10 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 11 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 12 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 13 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 14 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 15 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 16 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 17 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 18 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 19 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 20 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 21 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 22 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 23 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 24 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 25 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 26 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 27 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 28 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 29 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 30 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 31 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 32 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 33 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 34 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 35 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 36 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 37 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 38 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 39 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 40 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 41 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 42 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 43 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 44 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 45 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 46 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 47 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 48 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 49 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 1970-01-01T08:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 50 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 51 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 52 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 53 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 54 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 55 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 56 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 57 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 58 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 59 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 60 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 61 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 62 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 63 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 64 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 65 - -65535 - 2013-08-05T17:00:00 - 1 - 0 - PT8H0M0S - 2013-08-05T08:00:00 - 1970-01-01T08:00:00 - 2013-08-05T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-08-05T16:00:00 - 2013-08-06T09:00:00 - 3 - PT8H0M0S - - - - 66 - -65535 - 2013-10-28T17:00:00 - 1 - 0 - PT480H0M0S - 2013-10-28T08:00:00 - 1970-01-01T08:00:00 - 2013-10-28T16:00:00 - 1 - PT480H0M0S - 0 - - 1 - 2013-10-28T16:00:00 - 2013-10-29T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-10-29T16:00:00 - 2013-10-30T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-10-30T16:00:00 - 2013-10-31T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-10-31T16:00:00 - 2013-11-01T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-01T16:00:00 - 2013-11-02T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-04T16:00:00 - 2013-11-05T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-05T16:00:00 - 2013-11-06T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-06T16:00:00 - 2013-11-07T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-07T16:00:00 - 2013-11-08T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-08T16:00:00 - 2013-11-09T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-11T16:00:00 - 2013-11-12T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-12T16:00:00 - 2013-11-13T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-13T16:00:00 - 2013-11-14T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-14T16:00:00 - 2013-11-15T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-15T16:00:00 - 2013-11-16T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-18T16:00:00 - 2013-11-19T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-19T16:00:00 - 2013-11-20T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-20T16:00:00 - 2013-11-21T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-21T16:00:00 - 2013-11-22T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-22T16:00:00 - 2013-11-23T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-25T16:00:00 - 2013-11-26T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-26T16:00:00 - 2013-11-27T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-27T16:00:00 - 2013-11-28T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-28T16:00:00 - 2013-11-29T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-11-29T16:00:00 - 2013-11-30T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-02T16:00:00 - 2013-12-03T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-03T16:00:00 - 2013-12-04T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-04T16:00:00 - 2013-12-05T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-05T16:00:00 - 2013-12-06T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-06T16:00:00 - 2013-12-07T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-09T16:00:00 - 2013-12-10T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-10T16:00:00 - 2013-12-11T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-11T16:00:00 - 2013-12-12T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-12T16:00:00 - 2013-12-13T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-13T16:00:00 - 2013-12-14T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-16T16:00:00 - 2013-12-17T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-17T16:00:00 - 2013-12-18T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-18T16:00:00 - 2013-12-19T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-19T16:00:00 - 2013-12-20T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-20T16:00:00 - 2013-12-21T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-23T16:00:00 - 2013-12-24T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-24T16:00:00 - 2013-12-25T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-25T16:00:00 - 2013-12-26T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-26T16:00:00 - 2013-12-27T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-27T16:00:00 - 2013-12-28T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-30T16:00:00 - 2013-12-31T16:00:00 - 3 - PT8H0M0S - - - 1 - 2013-12-31T16:00:00 - 2014-01-01T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-01T16:00:00 - 2014-01-02T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-02T16:00:00 - 2014-01-03T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-03T16:00:00 - 2014-01-04T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-06T16:00:00 - 2014-01-07T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-07T16:00:00 - 2014-01-08T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-08T16:00:00 - 2014-01-09T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-09T16:00:00 - 2014-01-10T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-10T16:00:00 - 2014-01-11T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-13T16:00:00 - 2014-01-14T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-14T16:00:00 - 2014-01-15T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-15T16:00:00 - 2014-01-16T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-16T16:00:00 - 2014-01-17T16:00:00 - 3 - PT8H0M0S - - - 1 - 2014-01-17T16:00:00 - 2014-01-18T09:00:00 - 3 - PT8H0M0S - - - - 67 - -65535 - 2013-10-28T17:00:00 - 1 - 0 - PT8H0M0S - 2013-10-28T08:00:00 - 1970-01-01T08:00:00 - 2013-10-28T16:00:00 - 1 - PT8H0M0S - 0 - - 1 - 2013-10-28T16:00:00 - 2013-10-29T09:00:00 - 3 - PT8H0M0S - - - - diff --git a/irc/log b/irc/log index 03ae27b..9f0da42 100644 --- a/irc/log +++ b/irc/log @@ -3183,3 +3183,294 @@ 19:17 < jtanx> i'll stick with debian (but do the same thing) 21:07 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] 21:34 -!- MctxBot [~twang@220-253-203-242.dyn.iinet.net.au] has quit [Ping timeout] +--- Day changed Wed Sep 25 2013 +08:41 -!- MctxBot [~twang@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev +11:31 -!- jtanx [~asfa@130.95.54.13] has joined #mctxuwa_softdev +12:15 < jtanx> I think I know why we were having issues with pwm yesterday +12:16 < jtanx> if you do this command +12:16 < jtanx> echo bone_pwm_P8_13 > /sys/devices/bone_capemgr.8/slots +12:16 < jtanx> you make it unavailable from /sys/class/pwm +12:16 < jtanx> so in the run.sh script it was exporting all the pwm devices via the first method +12:16 < jtanx> and then it becomes unavailable via sysfs +12:17 < jtanx> anyway... I tried booting from the rcn image +12:17 < jtanx> it comes with pwm enabled already +12:17 < jtanx> and via that capemgr I got pwm to work +12:17 < jtanx> I don't know what /sys/class/pwm/pwm0 corresponds to (which pin) +12:19 < jtanx> the electronics teams' bbb wasn't done properly when we tried to upgrade the kernel +12:19 < jtanx> probably something to do with the device tree stuff +12:19 < jtanx> so I flashed it with the rcn image (which runs 3.8.13-bone26 +12:20 < jtanx> (demo image from here) +12:20 < jtanx> elinux.org/BeagleBoardDebian +12:47 -!- jtanx [~asfa@130.95.54.13] has quit [Ping timeout] +13:09 -!- jtanx_ [~asfa@130.95.54.13] has joined #mctxuwa_softdev +13:09 -!- jtanx_ is now known as jtanx +13:16 < jtanx> oh +13:16 < jtanx> so it now works +13:16 < jtanx> echo bone_pwm_P9_22 > slots +13:16 < jtanx> if I do that line for pwm0 +13:26 < jtanx> oh right +13:26 < jtanx> echo bone_pwm_P9_21 >slots +13:26 < jtanx> for pwm1 +13:30 < jtanx> ahhhhhh +13:30 < jtanx> if you comment out the line +13:30 < jtanx> modprobe pwm_test +13:30 < jtanx> from run.sh +13:30 < jtanx> it works +13:43 < jtanx> geeze kernel 3.8 has issues with usb hotplugging +13:43 < jtanx> https://groups.google.com/forum/?fromgroups#!searchin/beagleboard/usb/beagleboard/8aalvyWwaig/MUXAPuMTSOYJ +13:43 < jtanx> which explains why we're having issues with cameras +13:43 < jtanx> (partly at least) +13:47 < jtanx> and now pwms not working again +13:48 < jtanx> via sysfs +13:50 < jtanx> oh +13:50 < jtanx> I know why +13:51 < jtanx> you have to export it /sys/class/pwm +13:51 < jtanx> first +13:51 < jtanx> *before* you do stuff like echo bone_pwm_P9_21 >slots +13:52 < jtanx> yep +13:53 < jtanx> so the order is: echo 0/1 > /sys/class/pwm/export +13:53 < jtanx> then do that other stuff +13:57 < jtanx> egh +13:57 < jtanx> finnicky +13:57 < jtanx> ok I have to stop now +14:14 -!- jtanx [~asfa@130.95.54.13] has quit [Ping timeout] +14:15 -!- jtanx [~asfa@130.95.218.72] has joined #mctxuwa_softdev +15:46 -!- jtanx [~asfa@130.95.218.72] has quit [Ping timeout] +16:03 -!- jtanx [~asfa@130.95.218.72] has joined #mctxuwa_softdev +16:04 < jtanx> well that was an interesting experience +16:04 < jtanx> it's most reliable when you work directly with /sys/devices/ocp2.helper/PWM9_22* +16:05 < jtanx> I think if you echo am33xx_pwm to the slots thing when it's already loaded +16:05 < jtanx> weird shit can happen +16:05 < jtanx> too +16:07 < jtanx> setting the period via sysfs (eg /sys/class/pwm) didn't work most of the time either +16:07 < jtanx> you could change duty but not period +16:07 < jtanx> although I swear I had it working at one point +16:07 < jtanx> via the other way I think it works ok +16:08 < jtanx> oh yeah, and I was doing this using the demo image from http://elinux.org/BeagleBoardDebian +16:09 < jtanx> the electrical group's one has been reflashed with that version as well +16:09 < jtanx> (for ours I worked off my sd card) +16:10 < jtanx> that image also enables the ethernet-over-usb +16:36 < jtanx> I think we have to be careful which pins we export/enable +16:37 < jtanx> https://github.com/CircuitCo/BeagleBone-Black/blob/master/BBB_SRM.pdf?raw=true +16:37 < jtanx> pages 80-82 +16:37 < jtanx> the pins have different meanings based on what mode they're in +16:41 -!- jtanx [~asfa@130.95.218.72] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +17:59 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev +18:05 < jtanx> ...so I brought the BBB home, even though I should be studying for 2402 :S +18:05 < jtanx> the microphone came in today too +18:19 < jtanx> ok +18:19 < jtanx> so these documents: https://github.com/derekmolloy/boneDeviceTree/tree/master/docs +18:19 < jtanx> describes what the pins are used for by default +19:00 < sam_moore> Ah... they already got the microphone +19:00 < sam_moore> Welp. Guess we're stuck with it. +19:00 < sam_moore> So... we can record <50Hz sounds reliably, maybe +19:00 < sam_moore> How useful +19:01 < sam_moore> Have I been missing out on an email stream where the sensors team actually clears things with us? +19:04 < jtanx> not that I know of +19:04 < jtanx> haha +19:04 < jtanx> in other news +19:04 < jtanx> the sensors team ordered a pressure sensor with no mount +19:04 < jtanx> adrian had a spat because it'd cost something like $200 to make the mount +19:05 < jtanx> for a $10 part +19:05 < jtanx> so he said, order it from online , I don't care if it's from overseas +19:05 < sam_moore> Oh boy +19:06 < sam_moore> If there's an issue with the camera and/or microphone they'll blame us +19:06 < jtanx> yeah +19:06 < jtanx> about that camera +19:06 < sam_moore> Oh dear... +19:06 < sam_moore> Go ahead? +19:06 < jtanx> still couldn't get it to work today +19:06 < sam_moore> God dammit +19:06 < jtanx> although I didn't spend much time on it +19:06 < jtanx> I got pwm to work +19:06 < jtanx> mostly +19:06 < sam_moore> I thought it might be something like adding the user to the "video" group +19:06 < sam_moore> That's good! +19:07 < sam_moore> What was happening? +19:07 < jtanx> yeah, the problem is it doesn't show up at all (the camera) +19:07 < sam_moore> Hmm +19:07 < jtanx> and partly because 3.8 has an issue with usb hotplugging +19:07 < sam_moore> Haha +19:07 < jtanx> about pwm +19:07 < jtanx> it seems that the sysfs method is not so reliable +19:07 < jtanx> you can get it to work +19:07 < jtanx> you have to export those first +19:07 < jtanx> so echo 0 > /sys/class/pwm/export +19:08 < jtanx> then (and only then) +19:08 < jtanx> can you do +19:08 < jtanx> that echo to the slots +19:08 < jtanx> for those pins +19:08 < jtanx> then it seems to be happy +19:08 < jtanx> if you echo am33xx_pwm to the slots when it's already enabled +19:08 < jtanx> that also screws things up +19:08 < sam_moore> Ok +19:09 < sam_moore> Thanks for working that out +19:09 < jtanx> yeah +19:09 < sam_moore> If you want to change from sysfs to the other method that's fine +19:09 < sam_moore> But sysfs was much simpler to code +19:09 < jtanx> should have spent that time studying for mech2402 though :P +19:09 < sam_moore> Because you just sprintf an integer to the path +19:09 < jtanx> yeah +19:09 < jtanx> witht he other way it's all that dynamic path crap +19:09 < sam_moore> Rather than keeping track of "bone_pwm_test_P9_22.15.arbitrary_string" crap +19:09 < sam_moore> Exactly :P +19:09 < jtanx> but +19:10 < jtanx> you can enable pwm and analogue on boot +19:10 < jtanx> if I can find the link +19:10 < sam_moore> Sure, if that's easy +19:10 < sam_moore> I figured if we put them in the /etc/init.d script that'd be fine too +19:10 < sam_moore> Actually... maybe we should put it in the /etc/init.d script +19:11 < jtanx> oh yeah +19:11 < jtanx> and the demo image from that rcn image +19:11 < sam_moore> Because if someone gets a different beaglebone then they'd have to reenable it on boot +19:11 < jtanx> is better than screwing around with recompiling kernels +19:11 < sam_moore> Can you give a link? +19:11 < jtanx> I think it's the first image that you had originally +19:11 < jtanx> http://elinux.org/BeagleBoardDebian +19:12 < jtanx> there's this script in /boot +19:12 < sam_moore> Oh +19:12 < jtanx> that allows you to copy the sd card to flash +19:12 < jtanx> it also enables the usb over ethernet +19:12 < sam_moore> Oh right, the image I downloaded before we used yours +19:12 < sam_moore> Cool +19:12 < jtanx> yeah +19:12 < jtanx> I flashed electronics' one with that +19:12 < sam_moore> Does PWM and stuff work on it? +19:13 < jtanx> probably +19:13 < jtanx> I was using the same image +19:13 < jtanx> on ours +19:13 < jtanx> you run this script and it copies exatly what's on the sd card to the internal flash +19:13 < jtanx> resizes the partition as necessary +19:13 < jtanx> http://digital-drive.com/?p=146 +19:13 < jtanx> that page shows how to enable on boot +19:13 < jtanx> it's just a change to uEnv.txt in the boot partition +19:18 < sam_moore> Good work +19:19 < sam_moore> While I remember, for multiple logins and crap... can you just try to login as a local user account? +19:19 < sam_moore> Then we could make a wrapper around adduser and deluser for the "administrator" account +19:19 < jtanx> wow +19:20 < jtanx> I don't know +19:20 < sam_moore> I was just thinking +19:20 < sam_moore> Linux has a user account system already +19:20 < jtanx> yep, but is it a good idea to be making ~300 on a BBB? +19:21 < sam_moore> Well... putting LDAP on the BBB probably won't be less intense +19:21 < sam_moore> I know it's called "Lightweight" +19:21 < sam_moore> But that's in comparison to "DAP" +19:21 < jtanx> well to be perfectly honest, adrian is asking way too much +19:21 < sam_moore> Which was designed in the 1980s by a telephone directory company and used the original OSI networking model +19:21 < jtanx> you simply can't support a 300-odd user base on something like a BBB +19:21 < sam_moore> Yeah +19:22 < sam_moore> But maybe something like 30 users would work? +19:22 < jtanx> yeah +19:22 < jtanx> let's just keep it at that limit +19:22 < sam_moore> Another thing regarding the crazy requirements... +19:22 < sam_moore> If we have multiple Beaglebones running FastCGI +19:23 < sam_moore> We can design our GUI so that it has links to the appropriate Beaglebone for each function +19:23 < sam_moore> I don't think we actually need to do anything in nginx or the Beaglebone software +19:24 < jtanx> hmm +19:24 < sam_moore> At least in terms of displaying sensor data +19:24 < sam_moore> For actuator control, we would need to introduce networking between individual beaglebones +19:24 < jtanx> it actually depends on what he means by 'extensible' and/or distributed +19:24 < jtanx> like +19:24 < jtanx> you could say this BBB is for this experiement +19:25 < jtanx> this other BBB is for this other experiment +19:25 < sam_moore> But quite frankly you'd be mad to trust a distributed system with networking delays to coordinate control over hardware +19:25 < jtanx> well yeah +19:25 < sam_moore> Well at least something like this where we care about safety +19:25 < sam_moore> But if you keep the actual control over hardware independent and on seperate devices +19:25 < jtanx> but I mean +19:26 < jtanx> wait +19:26 < jtanx> if we interpret it as meaning +19:26 < jtanx> that each BBB runs an instance of the software +19:26 < jtanx> then they would still be separate +19:26 < jtanx> as in each BBB controls one 'experiment' +19:26 < jtanx> you customise each BBB based on the experiment that needs to be done +19:26 < sam_moore> Yes, that would work +19:26 < sam_moore> Yep +19:26 < jtanx> then there's no interaction between BBBS +19:27 < jtanx> the only thing is you have some sort of control at the front +19:27 < jtanx> that determines which BBB you connect to +19:27 < sam_moore> Yes, if there's interaction between BBBs it gets problematic +19:27 < jtanx> yeah +19:27 < sam_moore> Yes, you have one BBB which gives the user the "main menu" part of the GUI +19:27 < jtanx> I reckon that's a stupid requirement to ask +19:27 < jtanx> yeah +19:27 < sam_moore> Then the others just have customised GUIs or whatever +19:28 < jtanx> once you have to get them to talk to each other, you're then having to try and invent a whole new protocol +19:28 < jtanx> for that +19:28 < sam_moore> Yeah, and it depends on exactly what the hardware is +19:29 < sam_moore> You might be able to hack it onto the web protocol (eg: BeagleBone #1 sends http://beaglebone2/api/actuators?id=X?set=Y) +19:29 < sam_moore> But... let's not think about that +19:30 < sam_moore> It's clearly beyond the scope of this project +19:31 < sam_moore> So, after all that, I reckon if we use snoopy for ADC/GPIO/PWM and spike for the dilatometer then that would be cool (probably not actually necessary though) +19:31 < jtanx> yeah +19:32 < sam_moore> The dilatomter... it's going to cause headaches if Kieren really wants to "return" an array of points +19:33 < sam_moore> If the goal is to provide the user with a demonstration of what the dilatometer is doing, then you can just edit an image +19:33 < sam_moore> If the goal is to provide more data... I don't see the point really +19:34 < sam_moore> It's going to be the same sort of distribution every time +19:34 < sam_moore> Realistically all anyone would do is average it +19:34 < sam_moore> Maybe take a standard deviation +19:36 < jtanx> I really don't know why a dilatometer's even needed +19:36 < sam_moore> Educational reasons? :P +19:37 < jtanx> haha sure +19:37 < sam_moore> Anyway, hopefully Callum will deal with the dilatometer stuff +19:37 < sam_moore> The interferometer code is a good starting point +19:39 < jtanx> Yeah +19:39 < jtanx> hopefully +19:42 < sam_moore> We should arrange some meetings next week +19:42 < sam_moore> Also I'd like to see more of the other group members committing to git and talking in this channel +19:45 < sam_moore> People are missing a lot of design decisions here :S +19:45 < jtanx> Yeah +19:51 < jtanx> Ok +19:51 < jtanx> so I made a LUT from pin number on the board to GPIO pin number +19:52 < jtanx> so if you wanted to use P8_13 +19:52 < jtanx> you can use the lut to figure out what gpio number that corresponds to +19:53 < jtanx> we should probably restrict which pins can be used +19:53 < jtanx> because quite a few are reserved +19:53 < sam_moore> Sure +19:53 < sam_moore> Remove the #defines in bbb_pin_defines.h ? +19:54 < sam_moore> Don't export those pins in pin_test.c +19:54 < sam_moore> It is only really for testing anyway +19:54 < jtanx> yeah +19:55 < sam_moore> Although... I predict if we leave it in the software, *someone* at some point will try and control hardware directly through it :P +19:55 < sam_moore> For all the educational stuff it's nice though +19:56 < sam_moore> Oh, we could have an image of the pinout diagram +19:56 < sam_moore> And when someone clicks on a part of the image they get to control that pin +19:57 < sam_moore> Anyway... I really should study for MECH2402 or I will fail it +19:57 < sam_moore> So bye +19:57 < jtanx> yeah +19:57 < jtanx> bye +20:50 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +21:50 -!- MctxBot [~twang@220-253-203-242.dyn.iinet.net.au] has quit [Ping timeout] +--- Day changed Thu Sep 26 2013 +07:45 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev +08:36 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit [Ping timeout] +09:36 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev +10:47 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit [Ping timeout] +13:08 -!- jtanx [~asfa@130.95.54.13] has joined #mctxuwa_softdev +16:26 -!- jtanx [~asfa@130.95.54.13] has quit [Ping timeout] +17:04 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev +17:52 < jtanx> http://www.ti.com/lit/ug/spruh73i/spruh73i.pdf p1986 (chapter 15) on pwm +17:55 < jtanx> page 1996 on ePWM +17:56 < jtanx> ahhhhh +17:56 < jtanx> for ehrpwm0a/0b +17:56 < jtanx> the frequency is linked +18:08 < jtanx> ehrpwm is enhanced resolution pwm +18:08 < jtanx> Implemented using the A signal path of PWM, that is, on the EPWMxA output. EPWMxB output has +18:08 < jtanx> conventional PWM capabilities +18:08 < jtanx> (p2053) +19:06 < jtanx> if you want to make the pwm stuff not suck +19:06 < jtanx> there's this file called pwm_test.c +19:06 < jtanx> that's the driver +19:59 < jtanx> for future ref: http://armsdr.blogspot.com.au/2013/04/archlinux-on-beaglebone-and-linux-38.html +20:08 -!- jtanx_ [~asfa@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev +20:21 -!- jtanx [~asfa@220-253-203-242.dyn.iinet.net.au] has quit [Ping timeout] +21:19 < jtanx_> urgh wow +21:19 < jtanx_> ok, so I think pwm1/3/5 shouldn't be used to avoid period conflicts +21:19 < jtanx_> (pwm0/1 is for channel A/B of one pwm device, 3/4 another, 5/6 another) +21:20 < jtanx_> btw the correspondence between pwmX and pin number is: +21:21 < jtanx_> P9_22, P9_21, P9_42. P9_14, P9_16, P8_19, P8_13, P9_28 +21:23 < jtanx_> pwm 2/7 correspond to eCAP devices +21:24 < jtanx_> which I think are to capture PWM input +21:24 < jtanx_> but they can also be used to generate PWM output, afaik +23:08 -!- jtanx_ [~asfa@220-253-203-242.dyn.iinet.net.au] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"] +23:10 -!- MctxBot [~twang@220-253-203-242.dyn.iinet.net.au] has joined #mctxuwa_softdev diff --git a/reports/week7/summary.pdf b/reports/week7/summary.pdf new file mode 100644 index 0000000..23463cc Binary files /dev/null and b/reports/week7/summary.pdf differ diff --git a/reports/week8/adc_histogram.png b/reports/week8/adc_histogram.png new file mode 100644 index 0000000..9b2127a Binary files /dev/null and b/reports/week8/adc_histogram.png differ diff --git a/reports/week8/cape-headers-pwm.png b/reports/week8/cape-headers-pwm.png new file mode 100644 index 0000000..e21ea9a Binary files /dev/null and b/reports/week8/cape-headers-pwm.png differ diff --git a/reports/week8/gpio_write.png b/reports/week8/gpio_write.png new file mode 100644 index 0000000..790dfab Binary files /dev/null and b/reports/week8/gpio_write.png differ diff --git a/reports/week8/sample_rate_histogram.png b/reports/week8/sample_rate_histogram.png new file mode 100644 index 0000000..f52a62c Binary files /dev/null and b/reports/week8/sample_rate_histogram.png differ diff --git a/reports/week8/summary.pdf b/reports/week8/summary.pdf new file mode 100644 index 0000000..1c1868a Binary files /dev/null and b/reports/week8/summary.pdf differ