Merge branch 'master' of github:szmoore/MCTX3420
authorSam Moore <[email protected]>
Sat, 12 Oct 2013 14:52:48 +0000 (22:52 +0800)
committerSam Moore <[email protected]>
Sat, 12 Oct 2013 14:52:48 +0000 (22:52 +0800)
29 files changed:
irc/log
server/bbb_pin.c
server/bbb_pin.h
server/control.c
server/dilatometer.c
server/dilatometer.h
server/image.c
server/image.h
server/pin_test.c
server/pin_test.h
testing/MCTXWeb/public_html/current/Graph1.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/Graph2.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/Graph3.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/Graph4.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/Graph5.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/Graph6.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/all.zip [new file with mode: 0644]
testing/MCTXWeb/public_html/current/dummy files to test download functionality.txt [new file with mode: 0644]
testing/MCTXWeb/public_html/current/nograph.png [new file with mode: 0644]
testing/MCTXWeb/public_html/current/pressure1 [new file with mode: 0644]
testing/MCTXWeb/public_html/current/pressure2 [new file with mode: 0644]
testing/MCTXWeb/public_html/current/strain1 [new file with mode: 0644]
testing/MCTXWeb/public_html/current/strain2 [new file with mode: 0644]
testing/MCTXWeb/public_html/current/strain3 [new file with mode: 0644]
testing/MCTXWeb/public_html/current/strain4 [new file with mode: 0644]
testing/MCTXWeb/public_html/data-Justin.html [new file with mode: 0644]
testing/MCTXWeb/public_html/help-Justin.html [new file with mode: 0644]
testing/MCTXWeb/public_html/static/sbd.png [deleted file]
testing/MCTXWeb/public_html/static/style.css

diff --git a/irc/log b/irc/log
index 3744779..034c228 100644 (file)
--- a/irc/log
+++ b/irc/log
 18:37 -!- MctxBot [[email protected]] has joined #mctxuwa_softdev
 18:45 < jtanx> now to watch this week's lecture...
 21:31 -!- jtanx [[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Thu Oct 10 2013
+08:11 -!- jtanx [[email protected]] has joined #mctxuwa_softdev
+09:40 -!- jtanx [[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+13:30 -!- jtanx [[email protected]] has joined #mctxuwa_softdev
+23:04 -!- jtanx [[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+--- Day changed Fri Oct 11 2013
+08:21 -!- Rowan [[email protected]] has joined #mctxuwa_softdev
+08:42 -!- Rowan [[email protected]] has quit [EOF From client]
+09:19 -!- jtanx [[email protected]] has joined #mctxuwa_softdev
+09:59 -!- jtanx [[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
+15:09 -!- jtanx [[email protected]] has joined #mctxuwa_softdev
+15:10 < jtanx> urgh
+15:10 < jtanx> burning the midnight oil trying to get my cits2232 project done
+15:10 < jtanx> but
+15:10 < jtanx> it has taught me a lot about django
+15:10 < jtanx> which may be of use, especially for the whole admin stuff
+15:11 < jtanx> one possibility is that we have two separate 'logins'
+15:11 < jtanx> one gains you access to the site
+15:11 < jtanx> one gains control over the bbb (eg the server api)
+15:12 < jtanx> what you could do is keep the 'bind' functionality for the api, but make it check against the django user database for credentials
+15:12 < jtanx> I'll look into it, if not today then probably tomorrow
+19:39 < sam_moore> That sounds good
+19:48 < sam_moore> Should we do something like this: http://stackoverflow.com/questions/8988855/include-another-html-file-in-a-html-file (The accepted answer) to do with our sidebar/menu stuff
+19:48 < sam_moore> Although...
+19:48 < jtanx> well 
+19:48 < jtanx> if we use django it has really cool templating stuff
+19:48 < sam_moore> That solution is actually about as much as just copy/pasting the sidebar at the moment
+19:48 < jtanx> yeah
+19:49 < sam_moore> So Django does parts of our GUI as well as the user management system?
+19:49 < jtanx> Well yeah
+19:49 < jtanx> so django would be ui mostly
+19:49 < jtanx> then tack on to that our api
+19:49 < jtanx> which remains exactly the same
+19:49 < jtanx> except that it uses the django database for checking authorizaiton
+19:50 < jtanx> so right before you commence an experiment, you try to 'gain control' of the bbb, you resupply your login creds
+19:50 < sam_moore> Sure, that's a good solution, I thought django would just do user management though (rather than replace the JavaScript GUI)
+19:50 < jtanx> well if you do use django
+19:50 < jtanx> it's a good idea to change some of it, because of the templating system
+19:51 < jtanx> and that it can conditionally show content 
+19:51 < sam_moore> Ok
+19:51 < jtanx> some of the javascript stuff will stay though, definitely
+19:51 < jtanx> especially all the live update stuff
+19:51 < jtanx> but this is getting ahead of myself, because i'm not even sure if this will work
+19:51 < sam_moore> Hahaha
+19:52 < sam_moore> You're entering a territory where I can't help much
+19:52 < jtanx> yeah, well all of this 'web development' is new area for me too :P
+19:52 < jtanx> I'm supposed to be majoring in computation, not web tech...
+19:52 < sam_moore> You know more/better jQuery than me
+19:52 < jtanx> jquery is pretty easy to learn though
+19:53 < jtanx> i picked it up completely from this project
+19:53 < sam_moore> Well, that's one reason why we went with it, since I used it briefly for something and it wasn't too hard, and James said he'd used it before too
+19:54 < jtanx> Yeah
+19:54 < sam_moore> If you want to replace stuff with django, I'm ok with that, if it's simpler
+19:55 < jtanx> I'll see how it goes, hopefully it shouldn't be too hard to setup
+19:55 < sam_moore> It just seems silly to copy/paste this Navigation Menu into every file
+19:55 < jtanx> yep
+19:55 < sam_moore> But copy/pasting the code (stack overflow) to automatically make it is also annoying
+19:55 < jtanx> We can roll with the jquery soln if I don't get this working
+19:56 < sam_moore> Unless you could include that in the "runBeforeLoad()" ?
+19:56 < jtanx> can't you just have a placeholder
+19:56 < jtanx> and on document load, you load it?
+19:56 < sam_moore> Yeah
+19:56 < jtanx> It'll look a bit crap because you'll see it before the sidebar loads
+19:56 < sam_moore> Actually that's how you're doing other things
+19:56 < jtanx> yeah
+19:56 < sam_moore> But the navigation menu is hard coded html
+19:56 < sam_moore> I'm just reading the existing code :P
+19:56 < jtanx> haha
+19:57 < jtanx> yeah it's hardcoded - it's the easiest solution
+19:57 < jtanx> I've got my case study for 2402 this/next week too
+19:57 < sam_moore> Um... I think it's fairly easy to call load from a file
+19:57 < sam_moore> I'll look into that
+19:57 < jtanx> ok
+19:58 < sam_moore> The case study was reasonable, although he wanted a lot more detail from us
+19:58 < jtanx> what did you do?
+19:58 < sam_moore> Despite struggling to cram it into 4 pages
+19:58 < sam_moore> The pencil
+19:58 < sam_moore> That's a good one
+19:58 < jtanx> ah
+19:58 < sam_moore> Lots of youtube videos
+19:58 < jtanx> we're doing pet bottles
+19:58 < jtanx> there's this megafactories one on the coke plant which was prettyc ool
+19:58 < jtanx> but yeah the pencil one also has a lot 
+19:58 < jtanx> i think i saw the how its made one
+19:59 < jtanx> Ha
+19:59 < jtanx> http://wiki.nginx.org/HttpSsiModule
+19:59 < jtanx> if you want to get server specific
+19:59 < jtanx> you can do ssi
+19:59 < jtanx> let's not do that if possible :P
+20:00 < sam_moore> Wait...
+20:00 < sam_moore> It looks like you put html comments and they get sent to the server?
+20:00 < sam_moore> How is that a thing?
+20:00 < jtanx> <!--# include file="footer.html" -->
+20:00 < jtanx> nah what happens
+20:00 < jtanx> is the server reads the html file
+20:00 < jtanx> and where there's special placeholders
+20:00 < jtanx> it does stuff
+20:00 < sam_moore> Ah
+20:01 < sam_moore> No, do it client side
+20:01 < jtanx> yeah
+20:01 < sam_moore> There's like jQuery.load
+20:01 < sam_moore> I'd probably keep django for user auth to start with
+20:01 < sam_moore> But I think jQuery should be sufficient for the GUI
+20:02 < jtanx> I think if you roll with django
+20:02 < jtanx> you should use jQuery for all the interactive stuff
+20:02 < jtanx> (which you'd have to anyway)
+20:02 < jtanx> but you should use the templating system that django's got
+20:03 < sam_moore> Ok, what does django give you exactly then, I'm not quite sure what the "template" stuff is, I assume it's nothing like a C++ template
+20:03 < jtanx> OK
+20:03 < jtanx> hmm
+20:03 < jtanx> I'll give you access to my cits2232 repo temporarily
+20:03 < jtanx> so you can see
+20:03 < sam_moore> If it lets you easily include bits of html that's cool, but jQuery looks to be able to do that easily as well
+20:03 < sam_moore> Alright
+20:04 < jtanx> actually you know what
+20:04 < jtanx> i'll just post it on pastebin or something
+20:05 < jtanx> http://privatepaste.com/ec22ba7238
+20:05 < jtanx> That's the base template
+20:05 < jtanx> http://privatepaste.com/07499e4a19
+20:05 < jtanx> That's the index
+20:05 < jtanx> {{variable_name}} will display a variable name
+20:05 < jtanx> sorry, the contents of that variable
+20:06 < jtanx> {% %} blocks are for control
+20:06 < sam_moore> Hmm
+20:07 < jtanx> the base template got a bit out of hand for that project
+20:07 < sam_moore> Well, if you want to use something like that I'm ok with it
+20:07 < sam_moore> Although I think the thing that I was originally complaining about can be solved in jQuery :P
+20:08 < jtanx> yeah
+20:08 < sam_moore> But you should probably ask everyone else involved with the GUI for input too
+20:08 < jtanx> Yeah, good point
+20:09 < sam_moore> ... Really I didn't want to be involved with the GUI, but I kind of need to mess around with at least some basic graph stuff to work out if I need to change the server sensors/actuators api
+20:09 < jtanx> well let's just say that i did not envision doing the gui either
+20:09 < sam_moore> I'll try and keep what I do consistent with the overall style though
+20:09 < sam_moore> Which is how I got sidetracked complaining about copy/pasting things :P
+20:10 < sam_moore> I think the GUI we have so far is pretty good
+20:10 < jtanx> hehehe
+20:10 < jtanx> yeah it's not too bad
+20:11 < jtanx> the only thing that I wouldn't know how to do is that admin stuff
+20:11 < sam_moore> user admin or experiment admin?
+20:11 < jtanx> um
+20:11 < jtanx> I dunno, whatever that 'admin' functionality needs to be
+20:11 < jtanx> like 'access the full logs'
+20:11 < sam_moore> Oh, right
+20:12 < jtanx> unless you start implementing permissions in the api
+20:12 < sam_moore> Hmm, we might have to
+20:13 < sam_moore> It should just be an enum for the user type that gets returned/set by the authentication handler and checked for certain operations
+20:13 < sam_moore> But as you mentioned the other day, you don't want someone to be able to login after someone else has started an experiment and cancel it
+20:13 < sam_moore> Actually
+20:13 < sam_moore> Do you?
+20:13 < jtanx> admin only?
+20:13 < sam_moore> Exactly
+20:14 < jtanx> how difficult is that to do though
+20:14 < sam_moore> Store the username of who owns the current experiment
+20:14 < sam_moore> Store an enum of the user type of whoever is currently logged in
+20:14 < sam_moore> If someone tries to stop the experiment, unless their username matches, or they are an admin, refuse
+20:14 < sam_moore> There could be a safety issue there?
+20:15 < jtanx> the only thing is
+20:15 < sam_moore> If someone needs to stop the experiment but isn't an admin?
+20:15 < jtanx> everything's based off the control key
+20:15 < sam_moore> Meh... add another cookie
+20:15 < sam_moore> ... That escalated quickly
+20:15 < jtanx> you've already used the nameless cookie
+20:15 < jtanx> if you add another cookie
+20:15 < jtanx> you have to do string parsing
+20:15 < jtanx> and have named cookies
+20:16 < sam_moore> Hmmm
+20:16 < sam_moore> "Beyond the scope of the project" ?
+20:16 < jtanx> i think the format was
+20:16 < jtanx> key=value; key=value2
+20:16 < jtanx> yeah, beyond the scope :P
+20:16 < sam_moore> Yeah, that is ever so annoying
+20:16 < jtanx> let's leave it for now
+20:16 < jtanx> come back to it
+20:16 < sam_moore> Because if it were something like "key=value&key=value2" you could potentially reuse the FCGI parser
+20:17 < jtanx> yeah
+20:17 < jtanx> you could modify it
+20:17 < sam_moore> That would be the way to go
+20:17 < jtanx> generalise it
+20:17 < sam_moore> But it's low priority now
+20:17 < jtanx> yep
+20:17 < jtanx> wow i'm getting seriously sidetracked
+20:18 < jtanx> this mechatronics project is more interesting than any of my other projects though
+20:18 < sam_moore> Haha
+20:19 < sam_moore> I know what you mean
+20:19 < sam_moore> I want to compile a RT linux kernel on my laptop (since they have x86 versions)
+20:19 < sam_moore> So that I can look at how much the consistency in sample rate could theoretically improve...
+20:20 < sam_moore> If someone managed to port the RT linux kernel to the BeagleBone
+20:20 < jtanx> RT linux on your computer
+20:20 < jtanx> isn't that generally bad
+20:20 < jtanx> because RT screws up other stuff
+20:21 < sam_moore> Like what?
+20:21 < jtanx> decreased performance to meet the deadlines
+20:21 < sam_moore> Also, I don't have to permanently replace my existing kernel, just add another bootloader entry
+20:22 < sam_moore> If it screws up nginx that would be annoying though
+20:23 < jtanx> while you're at it, try running the bfs scheduler instead of the cfs scheduler :P
+20:23 < sam_moore> Maybe
+20:42 < sam_moore> Ok, the solution to the copy/paste is just something like $("#sidebar").load("static/sidebar.html")
+20:42 < sam_moore> However, whilst running this in the document.ready function on a test page works, running it in index.html appears to have no effect
+20:43 < sam_moore> Oh
+20:43 < sam_moore> I know why
+20:43 < sam_moore> Because runBeforeLoad is failing
+20:43 < sam_moore> Presumably you still want to load content like the navigation bar even if the server isn't running
+20:44 < sam_moore> So... there is ".done()" and ".fail()" ... is there ".either()"?
+20:46 < sam_moore> Ahahaha
+20:47 < sam_moore> Of course, there is ".always()"
+20:49 < sam_moore> Hmm, I wouldn't want to design any sort of large system with a language like this, but it is an interesting style
+20:51 < jtanx> haha
+20:52 < sam_moore> So, a lot of the header stuff can be moved into .html files and just jQuery.loaded, which should make things cleaner
+20:52 < sam_moore> I will refrain from doing that now though
+20:53 < jtanx> don't be too tempted to do a lot of templating with javascript
+20:53 < jtanx> because it will load asynchronously, stuff will look weird
+20:53 < jtanx> and if the js breaks
+20:53 < jtanx> well, your page is more screwed than before
+20:54 < sam_moore> Ok... but you could still potentially have at least one html file in the static directory
+20:54 < sam_moore> With all the header and navigation stuff
+20:55 < sam_moore> Just have a .fail() function!
+20:55 < sam_moore> That's what it's for, right :P
+20:56 < sam_moore> $("#thing").load("static/thing.html").fail($("#thing").html("<p> Something fucked up </p>")
+20:56 < sam_moore> Oh dear
+20:58 < jtanx> ~.~
+20:58 < jtanx> django here: https://mctx.us.to:8043/databases
+20:58 < jtanx> login with testuser:testuser
+20:58 < jtanx> ignore that it looks a lot like our gui
+20:58 < jtanx> except it doesnt work anymore
+21:00 < sam_moore> Well, django's used for UCC for member administration
+21:01 < sam_moore> Except it's entirely seperate from LDAP which we use for authentication
+21:01 < sam_moore> Except it's not really because it binds to LDAP for authentication :S
+21:01 < sam_moore> Wheels within wheels...
+21:02 < jtanx> ookay
+21:04 < sam_moore> You need LDAP for shell access
+21:04 < sam_moore> In fact...
+21:04 < sam_moore> We could potentially give pheme users shell access to the BeagleBone
+21:04 < sam_moore> But there's not really any point
+21:04 < jtanx> is that a good idea
+21:05 < sam_moore> No
+21:05 < sam_moore> It's an awful idea
+21:05 < sam_moore> Just saying it's possible :P
+21:06 < sam_moore> Someone could do this: :(){ :|:& };:
+21:06 < sam_moore> And break the entire thing
+21:08 < jtanx> is that the fork bomb
+21:09 < jtanx> ok the site works now
+21:09 < jtanx> sort of
+21:10 < sam_moore> 400 Bad Request
+21:10 < jtanx> hurr
+21:10 < sam_moore> I think iceweasel is being dumb and ignoring https:// ?
+21:10 < sam_moore> Although it was fine before
+21:11 < jtanx> nah probably screwed up the nginx config
+21:11 < sam_moore> No, it works, I just had to type the https:// instead of copy paste
+21:11 < sam_moore> Wierd
+21:11 < sam_moore> The test login doesn't work though
+21:11 < jtanx> testuser doesn't work for some reason
+21:11 < jtanx> yeah just register
+21:12 < sam_moore> Will it actually send an email?
+21:12 < jtanx> urgh
+21:12 < jtanx> no
+21:12 < sam_moore> haha
+21:12 < jtanx> okay no the config is still broken
+21:16 < sam_moore> I'll have to come back to this tomorrow
+21:16 < sam_moore> Bye
+21:17 < jtanx> ok bye
+23:09 -!- jtanx [[email protected]] has quit ["ChatZilla 0.9.90.1 [Firefox 24.0/20130910160258]"]
index 7d500dd..2ffc9e5 100644 (file)
@@ -1,6 +1,7 @@
 /**
  * @file bbb_pin.c
- * @purpose Implementation of BBB pin control functions and structures
+ * @brief Implementation of BBB pin control functions and structures
+ * On non-beaglebone (actually non-arm) platforms, this code is disabled.
  * THIS CODE IS NOT THREADSAFE
  */
 
@@ -509,7 +510,7 @@ bool ADC_Read(int id, int *value)
 
 #ifndef _BBB
 //For running on systems that are not the BBB
-bool True_Stub(void *arg, ...) { return true; }
+bool True_Stub(int arg, ...) { return true; }
 bool ADC_Read_Stub(int *val, ...) { *val = 0; return true; }
 bool GPIO_Read_Stub(bool *val, ...) { *val = false; return true; }
 #endif
index 97e7f9b..658b95a 100644 (file)
@@ -32,26 +32,26 @@ extern bool PWM_Stop(int pin);
 
 #else
 //Horrible hacks to silence gcc when compiling on systems that are not the BBB
-extern bool True_Stub(void *arg, ...);
+extern bool True_Stub(int arg, ...);
 extern bool ADC_Read_Stub(int *val, ...);
 extern bool GPIO_Read_Stub(bool *val, ...);
 
-#define GPIO_Export(pin) True_Stub((void*)pin)
+#define GPIO_Export(pin) True_Stub((int)pin)
 #define GPIO_Unexport(pin) (void)0
 
-#define PWM_Export(pin) True_Stub((void*)pin)
+#define PWM_Export(pin) True_Stub((int)pin)
 #define PWM_Unexport(pin) (void)0
 
-#define ADC_Export(pin) True_Stub((void*)pin)
+#define ADC_Export(pin) True_Stub((int)pin)
 #define ADC_Unexport(pin) (void)0
 
 #define GPIO_Read(pin, result) GPIO_Read_Stub(result, pin)
-#define GPIO_Set(pin, value) True_Stub((void*)pin, value)
+#define GPIO_Set(pin, value) True_Stub((int)pin, value)
 
 #define ADC_Read(id, value) ADC_Read_Stub(value, id)
 
-#define PWM_Set(pin, polarity, period, duty) True_Stub((void*)pin, polarity, period, duty)
-#define PWM_Stop(pin) True_Stub((void*)(int)pin) 
+#define PWM_Set(pin, polarity, period, duty) True_Stub((int)pin, polarity, period, duty)
+#define PWM_Stop(pin) True_Stub((int)pin) 
 //yuck
 
 #endif //_BBB
index 820c37c..0242a3b 100644 (file)
@@ -52,14 +52,8 @@ void Control_Handler(FCGIContext *context, char *params) {
        if (!FCGI_ParseRequest(context, params, values, 4))
                return;
        
-       if (!strcmp(action, "lock")) {
-               FCGI_LockControl(context, force);
-               return;
-       } else if (!strcmp(action, "emergency")) {
+       if (!strcmp(action, "emergency")) {
                desired_mode = CONTROL_EMERGENCY;
-       }
-       else if (!strcmp(action, "release")) {
-               FCGI_ReleaseControl(context);
        } else if (!strcmp(action, "start")) {
                desired_mode = CONTROL_START;
        } else if (!strcmp(action, "pause")) {
index 6610cac..c6560f0 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * @file dilatometer.c
- * @purpose Implementation of dilatometer related functions
+ * @brief Implementation of dilatometer related functions
  */
 
 #include "cv.h"
index 6635cdb..b3b7348 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * @file dilatometer.h
- * @purpose Declarations for functions to deal with dilatometer
+ * @brief Declarations for functions to deal with dilatometer
  */
 
 #include "common.h"
index dafe375..c7b6263 100644 (file)
@@ -9,8 +9,9 @@ void Image_Handler(FCGIContext * context, char * params)
        static CvCapture * capture = NULL;
        if (capture == NULL) {
                capture = cvCreateCameraCapture(0);
-               cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 640);
-               cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 480);
+               //limit resolution to work on bbb
+               cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, 352);
+               cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, 288);
        }
        static int p[] = {CV_IMWRITE_JPEG_QUALITY, 100, 0};
 
index 4d94b05..b62a7bd 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * @file image.h
- * @purpose Helper functions for image processing
+ * @brief Helper functions for image processing
  */
 
 #ifndef _IMAGE_H
index 9893072..77c0ef9 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * @file pin_test.c
- * @purpose Implementations to allow direct control over pins through FastCGI
+ * @brief Implementations to allow direct control over pins through FastCGI
  */
 
 #include "pin_test.h"
index dd07fe1..12ddc9c 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * @file pin_test.h
- * @purpose Declarations to allow direct control over pins through FastCGI
+ * @brief Declarations to allow direct control over pins through FastCGI
  */
 
 #ifndef _PIN_MODULE_H
diff --git a/testing/MCTXWeb/public_html/current/Graph1.png b/testing/MCTXWeb/public_html/current/Graph1.png
new file mode 100644 (file)
index 0000000..c8484b6
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/Graph1.png differ
diff --git a/testing/MCTXWeb/public_html/current/Graph2.png b/testing/MCTXWeb/public_html/current/Graph2.png
new file mode 100644 (file)
index 0000000..9c73eb3
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/Graph2.png differ
diff --git a/testing/MCTXWeb/public_html/current/Graph3.png b/testing/MCTXWeb/public_html/current/Graph3.png
new file mode 100644 (file)
index 0000000..6948a84
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/Graph3.png differ
diff --git a/testing/MCTXWeb/public_html/current/Graph4.png b/testing/MCTXWeb/public_html/current/Graph4.png
new file mode 100644 (file)
index 0000000..26e9fd4
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/Graph4.png differ
diff --git a/testing/MCTXWeb/public_html/current/Graph5.png b/testing/MCTXWeb/public_html/current/Graph5.png
new file mode 100644 (file)
index 0000000..2e36c98
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/Graph5.png differ
diff --git a/testing/MCTXWeb/public_html/current/Graph6.png b/testing/MCTXWeb/public_html/current/Graph6.png
new file mode 100644 (file)
index 0000000..86fa22a
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/Graph6.png differ
diff --git a/testing/MCTXWeb/public_html/current/all.zip b/testing/MCTXWeb/public_html/current/all.zip
new file mode 100644 (file)
index 0000000..a12e55d
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/all.zip differ
diff --git a/testing/MCTXWeb/public_html/current/dummy files to test download functionality.txt b/testing/MCTXWeb/public_html/current/dummy files to test download functionality.txt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/testing/MCTXWeb/public_html/current/nograph.png b/testing/MCTXWeb/public_html/current/nograph.png
new file mode 100644 (file)
index 0000000..018ba56
Binary files /dev/null and b/testing/MCTXWeb/public_html/current/nograph.png differ
diff --git a/testing/MCTXWeb/public_html/current/pressure1 b/testing/MCTXWeb/public_html/current/pressure1
new file mode 100644 (file)
index 0000000..380f4ae
--- /dev/null
@@ -0,0 +1,2 @@
+Would we be able to put files - like stream into the public - mctxweb file so that the cover page can access the file. 
+wasnt too sure how to go back files without going all the way back to my local filesystem
diff --git a/testing/MCTXWeb/public_html/current/pressure2 b/testing/MCTXWeb/public_html/current/pressure2
new file mode 100644 (file)
index 0000000..380f4ae
--- /dev/null
@@ -0,0 +1,2 @@
+Would we be able to put files - like stream into the public - mctxweb file so that the cover page can access the file. 
+wasnt too sure how to go back files without going all the way back to my local filesystem
diff --git a/testing/MCTXWeb/public_html/current/strain1 b/testing/MCTXWeb/public_html/current/strain1
new file mode 100644 (file)
index 0000000..380f4ae
--- /dev/null
@@ -0,0 +1,2 @@
+Would we be able to put files - like stream into the public - mctxweb file so that the cover page can access the file. 
+wasnt too sure how to go back files without going all the way back to my local filesystem
diff --git a/testing/MCTXWeb/public_html/current/strain2 b/testing/MCTXWeb/public_html/current/strain2
new file mode 100644 (file)
index 0000000..380f4ae
--- /dev/null
@@ -0,0 +1,2 @@
+Would we be able to put files - like stream into the public - mctxweb file so that the cover page can access the file. 
+wasnt too sure how to go back files without going all the way back to my local filesystem
diff --git a/testing/MCTXWeb/public_html/current/strain3 b/testing/MCTXWeb/public_html/current/strain3
new file mode 100644 (file)
index 0000000..380f4ae
--- /dev/null
@@ -0,0 +1,2 @@
+Would we be able to put files - like stream into the public - mctxweb file so that the cover page can access the file. 
+wasnt too sure how to go back files without going all the way back to my local filesystem
diff --git a/testing/MCTXWeb/public_html/current/strain4 b/testing/MCTXWeb/public_html/current/strain4
new file mode 100644 (file)
index 0000000..380f4ae
--- /dev/null
@@ -0,0 +1,2 @@
+Would we be able to put files - like stream into the public - mctxweb file so that the cover page can access the file. 
+wasnt too sure how to go back files without going all the way back to my local filesystem
diff --git a/testing/MCTXWeb/public_html/data-Justin.html b/testing/MCTXWeb/public_html/data-Justin.html
new file mode 100644 (file)
index 0000000..975b538
--- /dev/null
@@ -0,0 +1,271 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+
+<!--Current Experiment section is pretty much working, still working out the previous experiments bit-->
+<!--Basically, the download links and graph links automatically update depending on what is selected in the drop-down menus-->
+<!--Some dodgy javascript is involved but it sort of works-->
+<!--The HTML5 "download" attribute is used to force downloads, but that's not compatible with IE (it just views the files in IE)-->
+<html>
+  <head>
+    <title>MCTX3420 Web Interface</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <!--[if lte IE 8]>
+      <script language="javascript" type="text/javascript" src="static/excanvas.min.js"></script>
+    <![endif]-->
+    <script type="text/javascript" src="static/jquery-1.10.1.min.js"></script>
+    <script type="text/javascript" src="static/jquery.flot.min.js"></script>
+    <script type="text/javascript" src="static/mctx.gui.js"></script>
+
+    <link rel="stylesheet" type="text/css" href="static/style.css">
+    <link rel="stylesheet" type="text/css" href="static/nav-menu.css">
+    <script type="text/javascript">
+      runBeforeLoad().done(function() {
+        $(document).ready(function() {
+          //Show the content!
+          $("#content").css("display", "block");
+          //Set the welcome bar
+          var name = " " + (mctx.friendlyName ? mctx.friendlyName : "");
+          $("#welcome-container").text("Welcome" + name + "!");
+          $("#logout-container").css("display", "block");
+          //$("#menu-container").populateNavbar();
+
+          $("#logout").click(function() {
+            $("#logout").logout();
+          });
+
+          $("#main_controls").submit(function() {
+            //Validate!
+            return false;
+          });
+
+          $("#errorlog").setErrorLog();
+        });
+      })
+
+      //function to load appropriate graph image depending on drop-down menu
+      function graphLoad(graphid, folder, newgraph) {
+        document.getElementById(graphid).src = folder + "/" + newgraph + ".png";
+      }
+      //function to load appropriate graph image depending on drop-down menu
+      function graphLoad2(graphid, newgraph) {
+        var exp = document.getElementById("expselect").value;
+        document.getElementById(graphid).src = exp + "/" + newgraph + ".png";
+      }
+      //function to create appropriate experiment links depending on drop-down menu
+      function expLoad(expclass, folder, newlink) {
+        var elems = document.getElementsByClassName(expclass);
+        for (i = 0; i < elems.length; i++) {
+          var elem = elems[i];
+          elem.href = folder + "/" + newlink;
+        }
+      }
+      //function to update experiment links links depending on drop-down menu
+      function expLoadTotal(folder) {
+        expLoad('s1', folder, 'strain1');
+        expLoad('s2', folder, 'strain2');
+        expLoad('s3', folder, 'strain3');
+        expLoad('s4', folder, 'strain4');
+        expLoad('p1', folder, 'pressure1');
+        expLoad('p2', folder, 'pressure2');
+        expLoad('d', folder, 'all.zip');
+      }
+    </script>
+  </head>
+
+  <body>
+    <div id="header-wrap">
+      <div id="header">
+        <div id="leftnav">
+          <a href="http://www.uwa.edu.au/" target="_blank">
+            <img alt = "The University of Western Australia"
+                 src="static/uwacrest-text.png">
+          </a>
+          <span id="title">Exploding Cans</span>
+        </div>
+        <div id="rightnav">
+          <span id="welcome-container">
+          </span>
+          <span id="date">
+            <script type="text/javascript">getDate();</script>
+          </span>
+          <div id="logout-container">
+            <form action="#">
+              <div>
+                <input type="button" id="logout" value="Logout">
+              </div>
+            </form>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <!-- End header -->
+
+    <div id="content-wrap">
+      <noscript>
+        <div class="widget centre">
+          <div class="title">JavaScript required</div>
+          This website requires JavaScript to function correctly.
+          Please enable JavaScript to use this site.
+        </div>
+      </noscript>
+
+      <div id="content">
+        <div id="sidebar">
+          <div class="widget">
+            <div class="title">Navigation menu</div>
+            <div class="nav-menu">
+              <ul>
+                <li><a href="index.html"><span>Home</span></a></li>
+                <li><a href="control.html"><span>Experiment control</span></a></li>
+                <li><a href="pintest.html"><span>Pin debugging</span></a></li>
+                <li class="last"><a href="#"><span>Help</span></a></li>
+              </ul>
+            </div>
+          </div>
+          <div class="widget">
+            <div class="title">Help</div>
+
+          </div>
+        </div>
+        <!-- End sidebar -->
+
+        <div id="main">
+          <div class="widget">
+            <div class="title">Experiment Data</div>
+            <b>Current Experiment</b>
+            <table>
+              <tr>
+                <!--I have no idea how we'll end up storing all the experiment data on the Beaglebone so these currently just link to a bunch of dummy files-->
+                <td>View Sensor Data</td>
+                <td></td>
+                <td><a href="current/strain1">Strain 1</a></td>
+                <td><a href="current/strain2">Strain 2</a></td>
+                <td><a href="current/strain3">Strain 3</a></td>
+                <td><a href="current/strain4">Strain 4</a></td>
+                <td><a href="current/pressure1">Pressure 1</a></td>
+                <td><a href="current/pressure2">Pressure 2</a></td>
+              </tr>
+              <tr>
+                <!--uses the download attribute to force downloads, only compatible with some browsers. Other users will just have to right-click and Save File As-->
+                <td>Save Sensor Data</td>
+                <td><a href="current/all.zip" download><input type="button" value="Download All"></a></td>
+                <td><a href="current/strain1" download><input type="button" value="Strain 1"></a></td>
+                <td><a href="current/strain2" download><input type="button" value="Strain 2"></a></td>
+                <td><a href="current/strain3" download><input type="button" value="Strain 3"></a></td>
+                <td><a href="current/strain4" download><input type="button" value="Strain 4"></a></td>
+                <td><a href="current/pressure1" download><input type="button" value="Pressure 1"></a></td>
+                <td><a href="current/pressure1" download><input type="button" value="Pressure 1"></a></td>
+              </tr>
+              <tr>
+                <!--not sure about how exactly we'll be linking to dilatometer or camera data yet-->
+                <td>Dilatometer</td>
+                <td><a href="nowhere" download="nowhere"><input type="button" value="Download Data"></a></td>
+                <td><a href="nowhere">View Data</a></td>
+              </tr>
+              <tr>
+                <td>Camera Data</td>
+                <td><a href="nowhere" download="nowhere"><input type="button" value="Download Data"></a></td>
+                <td><a href="nowhere">View Data</a></td>
+              </tr>
+              <tr>
+
+                <td>Graphs</td>
+                <td>
+                  <form>
+                    <select onChange="graphLoad('g1', 'current', this.value)">
+                      <!--link this to graphs functionality, currently just loads a placeholder image-->
+                      <!--graphs could just plot the data over entire time range of the experiment-->
+                      <option value="nograph">Choose to view</option>
+                      <option value="graph1">Strain 1</option>
+                      <option value="graph2">Strain 2</option>
+                      <option value="graph3">Strain 3</option>
+                      <option value="graph4">Strain 4</option>
+                      <option value="graph5">Pressure 1</option>
+                      <option value="graph6">Pressure 2</option>
+                    </select>
+                  </form>
+
+                </td>
+              </tr>
+            </table>
+            <img src="current/nograph.png" id="g1">
+            <p><b>Previous Experiments</b></p>
+            <table>
+              <tr>
+                <td>Select Experiment</td>
+                <td>
+                  <!--Upon selecting experiment, modify all the download links-->
+                  <!--TODO: prevent downloads of data if no experiment is selected-->
+                  <select id="expselect" onChange="expLoadTotal(this.value)">
+                    <option value="current">Current</option>
+                    <option value="exp1">Experiment 1</option>
+                    <option value="exp2">Experiment 2</option>
+                    <option value="exp3">Experiment 3</option>
+                    <option value="exp4">Experiment 4</option>
+                    <option value="exp5">Experiment 5</option>
+                  </select>
+                </td>
+              </tr>
+              <tr>
+                <td>Experiment Date</td>
+                <!--Lookup the experiment date here for identification purposes-->
+                <td><b>DATE LOOKUP</b></td>
+              </tr>
+              <tr>
+                <td>View Sensor Data</td>
+                <td></td>
+                <td><a href="current/strain1" class="s1">Strain 1</a></td>
+                <td><a href="current/strain2" class="s2">Strain 2</a></td>
+                <td><a href="current/strain3" class="s3">Strain 3</a></td>
+                <td><a href="current/strain4" class="s4">Strain 4</a></td>
+                <td><a href="current/pressure1" class="p1">Pressure 1</a></td>
+                <td><a href="current/pressure2" class="p2">Pressure 2</a></td>
+              </tr>
+              <tr>
+                <td>Save Sensor Data</td>
+                <td><a href="current/all.zip" download class="d"><input type="button" value="Download All"></a></td>
+                <td><a href="current/strain1" download class="s1"><input type="button" value="Strain 1"></a></td>
+                <td><a href="current/strain2" download class="s2"><input type="button" value="Strain 2"></a></td>
+                <td><a href="current/strain3" download class="s3"><input type="button" value="Strain 3"></a></td>
+                <td><a href="current/strain4" download class="s4"><input type="button" value="Strain 4"></a></td>
+                <td><a href="current/pressure1" download class="p1"><input type="button" value="Pressure 1"></a></td>
+                <td><a href="current/pressure2" download class="p2"><input type="button" value="Pressure 1"></a></td>
+              </tr>
+              <tr>
+                <!--not sure about how exactly we'll be linking to dilatometer or camera data yet-->
+                <td>Dilatometer</td>
+                <td><a href="nowhere" download="nowhere"><input type="button" value="Download Data"></a></td>
+                <td><a href="nowhere">View Data</a></td>
+              </tr>
+              <tr>
+                <td>Camera Data</td>
+                <td><a href="nowhere" download="nowhere"><input type="button" value="Download Data"></a></td>
+                <td><a href="nowhere">View Data</a></td>
+              </tr>
+              <tr>
+                <td>Graphs</td>
+                <td>
+                  <form>
+                    <select onChange="graphLoad2('g2', this.value)">
+                      <!--link this to graphs functionality, currently just loads a placeholder image-->
+                      <!--graphs could just plot the data over entire time range of the experiment-->
+                      <option value="nograph">Choose to view</option>
+                      <option value="graph1">Strain 1</option>
+                      <option value="graph2">Strain 2</option>
+                      <option value="graph3">Strain 3</option>
+                      <option value="graph4">Strain 4</option>
+                      <option value="graph5">Pressure 1</option>
+                      <option value="graph6">Pressure 2</option>
+                    </select>
+                  </form>
+                </td>
+              </tr>
+            </table>
+            <img src="current/nograph.png" id="g2">
+          </div>
+        </div>
+        <!-- End main content -->
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/testing/MCTXWeb/public_html/help-Justin.html b/testing/MCTXWeb/public_html/help-Justin.html
new file mode 100644 (file)
index 0000000..acf23a9
--- /dev/null
@@ -0,0 +1,186 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+  <head>
+    <title>MCTX3420 Web Interface</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+    <script type="text/javascript" src="static/jquery-1.10.1.min.js"></script>
+    <script type="text/javascript" src="static/mctx.gui.js"></script>
+
+    <link rel="stylesheet" type="text/css" href="static/style.css">
+    <link rel="stylesheet" type="text/css" href="static/nav-menu.css">
+    <script type="text/javascript">
+      runBeforeLoad().done(function() {
+        $(document).ready(function() {
+          //Show the content!
+          $("#content").css("display", "block");
+          //Set the welcome bar
+          var name = " " + (mctx.friendlyName ? mctx.friendlyName : "");
+          $("#welcome-container").text("Welcome" + name + "!");
+          $("#logout-container").css("display", "block");
+          //$("#menu-container").populateNavbar();
+
+          $("#logout").click(function() {
+            $("#logout").logout();
+          });
+
+          $("#main_controls").submit(function() {
+            //Validate!
+            return false;
+          });
+
+          $("#errorlog").setErrorLog();
+        });
+      })
+
+    </script>
+  </head>
+
+  <body>
+    <div id="header-wrap">
+      <div id="header">
+        <div id="leftnav">
+          <a href="http://www.uwa.edu.au/" target="_blank">
+            <img alt = "The University of Western Australia"
+                 src="static/uwacrest-text.png">
+          </a>
+          <span id="title">Exploding Cans</span>
+        </div>
+        <div id="rightnav">
+          <span id="welcome-container">
+          </span>
+          <span id="date">
+            <script type="text/javascript">getDate();</script>
+          </span>
+          <div id="logout-container">
+            <form action="#">
+              <div>
+                <input type="button" id="logout" value="Logout">
+              </div>
+            </form>
+          </div>
+        </div>
+        <div class="clear"></div>
+      </div>
+    </div>
+    <!-- End header -->
+
+    <div id="content-wrap">
+      <div id="content">
+        <div id="sidebar">
+          <div class="widget">
+            <div class="title">Navigation menu</div>
+            <div class="nav-menu">
+              <ul>
+                <li><a href="index.html"><span>Home</span></a></li>
+                <li><a href="control.html"><span>Experiment control</span></a></li>
+                <li><a href="pintest.html"><span>Pin debugging</span></a></li>
+                <li class="last"><a href="#"><span>Help</span></a></li>
+              </ul>
+            </div>
+          </div>
+          <div class="widget justify">
+            <div class="title">Tutorials</div>
+            <p class="justify">For general information on using the MCTX project web interface (i.e. this webpage!) see the <b>'Tutorials'</b> section.
+              This will guide you through setting up, running and analysing an experiment with basic tutorials and explanation of the possible options.</p>
+          </div>
+          <div class="widget justify">
+            <div class="title">Experiment Hardware</div>
+            <p class="justify">For detailed technical information about the experiment hardware, including system diagrams, datasheets and run-downs of the components,
+              see the <b>'Hardware'</b> section.</p>
+          </div>
+          <div class="widget justify">
+            <div class="title">Experiment Software</div>
+            <p class="justify">For detailed technical information about the experiment software, including explanations of its structure, functions and so on, see the
+              <b>'Software'</b> section. Actual code can be accessed on the project's GitHub: <a href="https://github.com/szmoore/MCTX3420">MCTX3420</a>.</p>
+          </div>
+          <div class="widget justify">
+            <div class="title">Contact</div>
+            <p class="justify">If you would like more information about the project or require additional assistance, please contact:</p>
+            <p><b>Adrian Keating</b></p>
+            <p><b>Adam Wittek</b></p>
+          </div>
+        </div>
+        <!-- End sidebar -->
+
+        <div id="main">
+          <div class="widget">
+            <div class="title">Getting Started</div>
+            <p class="justify">Welcome to the MCTX3420 project documentation! On this page, you will find help on how to use the project software,
+              as well as information about the various hardware components.</p>
+            <p class="justify">For a basic introduction to using the experiment, see <b>'Tutorials'</b>.
+              <a href="https://github.com/szmoore/MCTX3420/wiki/System-Overview" target="_blank">System overview</a> provides a general overview of the experiment's hardware, while
+              <a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Web-Interface" target="_blank">Using the web interface</a> provides a tutorial on using the the project software.
+              For detailed information about the experiment hardware, see the <b>'Hardware'</b> section. For detailed information about the project software,
+              see the <b>'Software'</b> section.</p>
+            <div class="sub-title">Tutorials</div>
+            <ul>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/System-Overview" target="_blank">System overview</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Web-Interface" target="_blank">Using the web interface</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Run-an-Experiment" target="_blank">Running an experiment</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-View-Old-Experiments" target="_blank">Viewing previous experiments</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Data-Processing" target="_blank">Data processing</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/System-Safety" target="_blank">System safety</a></li>
+            </ul>
+            <div class="sub-title">Hardware</div>
+            <ul>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/System-Overview" target="_blank">System overview</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Electronics" target="_blank">Electronics</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-BeagleBone" target="_blank">BeagleBone</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Pneumatics" target="_blank">Pneumatics</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Sensors" target="_blank">Sensors</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Mounting" target="_blank">Mounting</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Case" target="_blank">Case</a></li>
+            </ul>
+            <div class="sub-title">Software</div>
+            <ul>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Overview" target="_blank">Software overview</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Browser-Interface" target="_blank">Browser interface</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Server-API" target="_blank">Server API</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Server-Code" target="_blank">Server code</a>
+                <ul>
+                  <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Data-Handling" target="_blank">Data handling</a></li>
+                  <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Sensors-&amp;-Actuators" target="_blank">Sensors and actuators</a></li>
+                  <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Pin-Access" target="_blank">Pin access</a></li>
+                  <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Image-Processing" target="_blank">Image processing</a></li>
+                </ul>
+              </li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Terminology" target="_blank">Terminology</a></li>
+            </ul>
+          </div>
+
+          <div class="widget">
+            <div class="title">Project Wiki</div>
+            <p>All of the project's help documentation is stored in its <a href="https://github.com/szmoore/MCTX3420/wiki" target="_blank">GitHub wiki.</a> This git repository also
+              stores all of the software code for the project; to access the project code files, visit <a href="https://github.com/szmoore/MCTX3420" target="_blank">this link</a>.</p>
+            <p>The following is a list of pages on the GitHub wiki (all of which can be accessed via the categories above):<p>
+            <ul>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Data-Processing" target="_blank">Getting Started: Data Processing</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Run-an-Experiment" target="_blank">Getting Started: Run an Experiment</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-View-Old-Experiments" target="_blank">Getting Started: View Old Experiments</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Getting-Started:-Web-Interface" target="_blank">Getting Started: Web Interface</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-BeagleBone" target="_blank">Hardware: BeagleBone</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Case" target="_blank">Hardware: Case</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Electronics" target="_blank">Hardware: Electronics</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Mounting" target="_blank">Hardware: Mounting</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Pneumatics" target="_blank">Hardware: Pneumatics</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Hardware:-Sensors" target="_blank">Hardware: Sensors</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki" target="_blank">Home</a>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Browser-Interface" target="_blank">Software: Browser Interface</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Data-Handling" target="_blank">Software: Data Handling</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Image-Processing" target="_blank">Software: Image Processing</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Overview" target="_blank">Software: Overview</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Pin-Access" target="_blank">Software: Pin Access</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Sensors-&amp;-Actuators" target="_blank">Software: Sensors &amp; Actuators</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Server-API" target="_blank">Software: Server API</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Server-Code" target="_blank">Software: Server Code</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/Software:-Terminology" target="_blank">Software: Terminology</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/System-Overview" target="_blank">System Overview</a></li>
+              <li><a href="https://github.com/szmoore/MCTX3420/wiki/System-Safety" target="_blank">System Safety</a></li>
+            </ul>
+          </div>
+        </div>
+        <!-- End main content -->
+      </div>
+    </div>
+  </body>
+</html>
diff --git a/testing/MCTXWeb/public_html/static/sbd.png b/testing/MCTXWeb/public_html/static/sbd.png
deleted file mode 100644 (file)
index 4938d31..0000000
Binary files a/testing/MCTXWeb/public_html/static/sbd.png and /dev/null differ
index 3a62cb0..e9a8623 100644 (file)
@@ -203,9 +203,8 @@ input[type="text"]:focus, input[type="password"]:focus {
   font-size: 20px;
 }
 
-#sidebar .item {
-  padding: 0.2em;
-  margin-bottom: 0.5em;
+.justify {
+  text-align: justify;
 }
 
 #main {

UCC git Repository :: git.ucc.asn.au