TauLabs/TauLabs — pull request #293 by kubark42 (2013-02-07 20:24:43+00:00)
Title: Scope refactoring, new scopes

So this one is going to be a little messy. It builds on the Vibration Test (https://github.com/TauLabs/TauLabs/pull/215) firmware, so it would be good to finish that review at the same time.

I have refactored the scope plugin. It has a more compact settings interface, now supports new types of scopes, uses better terminology, reduces computer load, and supports multiple curves driven by a single data source, on a single plot.

Histogram
![Screen Shot 2013-02-07 at 8 27 07 PM](https://f.cloud.github.com/assets/1118185/136928/6d368372-715c-11e2-9672-7b60403ceeb4.png)

Spectrogram
![Screen Shot 2013-02-07 at 8 26 57 PM](https://f.cloud.github.com/assets/1118185/136929/70c61be2-715c-11e2-846b-6114a10c86e7.png)

Scatterplot
![Screen Shot 2013-02-07 at 8 26 50 PM](https://f.cloud.github.com/assets/1118185/136930/73710046-715c-11e2-811a-132dc9949669.png)

On the left side, gyroscope output, averaged gyroscope output, and standard deviation of gyroscope output.

On the right, histogram binning of the accelerometer output. (Ignore the bin size, that was just a test to make sure that bins 0 across don't blow up the plugin.)
![Screen Shot 2013-02-07 at 8 26 28 PM](https://f.cloud.github.com/assets/1118185/136931/7546a45c-715c-11e2-8ae3-81d39feffa4b.png)

Accelerometer showing spectrogram (resolution is limited because of lack of free memory on FlyingF3. The Quanton should be able to do 32 bin output without a problem).
![Screen Shot 2013-02-07 at 8 24 48 PM](https://f.cloud.github.com/assets/1118185/136933/798379e6-715c-11e2-8e08-c76236a7b790.png)

More views of multiple curves from single data source
![Screen Shot 2013-02-07 at 6 37 23 PM](https://f.cloud.github.com/assets/1118185/136935/7bbd7d2e-715c-11e2-9d22-c99b497c419c.png)

3-axis accelerometer output through the histogram.
![Screen Shot 2013-02-06 at 4 35 17 AM](https://f.cloud.github.com/assets/1118185/136939/810138fc-715c-11e2-8075-990ac34160aa.png)

Some of my class choices probably weren't best, I was learning some more about OO programming as I was going along. Specifically, the way that I've done the 2D and 3D branching seems to me as if I could have done that with class inheritance, but that's about as far as I see right now.

Please test and make sure there are now bugs. I'm open to suggestions on UI layout, especially if someone knows how to make the blue selection bar used in the 2D curve selection window to be a dotted line around a transparent highlight instead of a blue highlight.