]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Preparing Teensy 3.1 and CLI merge for DPH controller code.
authorJacob Alexander <haata@kiibohd.com>
Sat, 22 Mar 2014 21:32:06 +0000 (14:32 -0700)
committerJacob Alexander <haata@kiibohd.com>
Sat, 22 Mar 2014 21:32:06 +0000 (14:32 -0700)
CMakeLists.txt
Lib/_buildvars.h
Macro/buffer/macro.c
Output/pjrcUSB/output_com.c
Output/pjrcUSB/output_com.h
main.c
setup.cmake

index 177ee14a19b82ba4b951cf13e3b6750c168280b6..53cb1400f201d1bc8cbfdf49e338f4e8ec05fb9c 100644 (file)
@@ -1,6 +1,6 @@
 ###| CMAKE Kiibohd Controller |###
 #
-# Jacob Alexander 2011-2013
+# Jacob Alexander 2011-2014
 # Due to this file's usefulness:
 #
 # Released into the Public Domain
@@ -27,6 +27,7 @@ include( AddFileDependencies )
 #| "avr"       # Teensy++ 1.0
 #| "avr"       # Teensy++ 2.0
 #| "arm"       # Teensy   3.0
+#| "arm"       # Teensy   3.1
 set( COMPILER_FAMILY "arm" )
 #set( COMPILER_FAMILY "avr" )
 
index 6abbeda29cd906a4f8c7df5e348f403508dead9c..3cf21b526e22449840602a257bb95849466f1fd5 100644 (file)
@@ -30,7 +30,7 @@
 
 // You can change these to give your code its own name.
 #define STR_MANUFACTURER       L"@MANUFACTURER@"
-#define STR_PRODUCT            L"ForceGauge - @OutputModule@ @DebugModule@"
+#define STR_PRODUCT            L"ForceGauge - @ScanModule@ @MacroModule@ @OutputModule@ @DebugModule@"
 #define STR_SERIAL              L"@GitLastCommitDate@"
 
 
 #define CLI_RepoOrigin          "@Git_Origin_URL@"
 #define CLI_CommitDate          "@Git_Date_INFO@"
 #define CLI_CommitAuthor        @Git_Commit_Author@
-#define CLI_Modules             "Output(@OutputModule@) Debug(@DebugModule@)"
+#define CLI_Modules             "Scan(@ScanModule@) Macro(@MacroModule@) Output(@OutputModule@) Debug(@DebugModule@)"
 #define CLI_BuildDate           "@Build_Date@"
 #define CLI_BuildOS             "@CMAKE_SYSTEM@"
 #define CLI_Arch                "@COMPILER_FAMILY@"
 #define CLI_Chip                "@MCU@"
 #define CLI_CPU                 "@CPU@"
-#define CLI_Device              "ForceGauge"
+#define CLI_Device              "Keyboard"
 
 
 // Mac OS-X and Linux automatically load the correct drivers.  On
index b7d645eeef547335cca427b9d860cf9f79a2c4df..9654c90484ac7fb5f41ba3493332b6037d832646 100644 (file)
@@ -1,15 +1,15 @@
-/* Copyright (C) 2011-2013 by Jacob Alexander
- * 
+/* Copyright (C) 2011-2014 by Jacob Alexander
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -28,7 +28,7 @@
 #include <led.h>
 #include <print.h>
 #include <scan_loop.h>
-#include <usb_com.h>
+#include <output_com.h>
 
 // Keymaps
 #include <keymap.h>
index 6e258ddad5c96b22e3019b4562f440da87c56d8a..c7c7b91ce1fe320ccb5cedc30a9be86738e7eb52 100644 (file)
@@ -1,15 +1,15 @@
-/* Copyright (C) 2011-2013 by Jacob Alexander
- * 
+/* Copyright (C) 2011-2014 by Jacob Alexander
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -88,7 +88,7 @@ inline void output_setup()
 
 
 // USB Data Send
-inline void usb_send(void)
+inline void output_send(void)
 {
                // TODO undo potentially old keys
                for ( uint8_t c = USBKeys_Sent; c < USBKeys_MaxSize; c++ )
index 5d201089357c525f15614b5f6f691335662835a5..a8a84efd57e3d1542225bef230d5d8635f80d095 100644 (file)
@@ -1,15 +1,15 @@
-/* Copyright (C) 2013 by Jacob Alexander
- * 
+/* Copyright (C) 2013-2014 by Jacob Alexander
+ *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
+ *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -60,6 +60,8 @@ extern                       uint8_t USBKeys_Idle_Count;
 
 void output_setup();
 
+void output_send();
+
 void output_firmwareReload();
 
 #endif
diff --git a/main.c b/main.c
index 736e70fc0b7c7a9ccfde494f3abd2148b099f862..56487b6376c7c64a374f474fd08869d596d8b32b 100644 (file)
--- a/main.c
+++ b/main.c
 
 // ----- Function Declarations -----
 
-void cliFunc_distRead    ( char* args );
-void cliFunc_free        ( char* args );
-void cliFunc_gaugeHelp   ( char* args );
-void cliFunc_single      ( char* args );
-void cliFunc_start       ( char* args );
-void cliFunc_stop        ( char* args );
-void cliFunc_zeroForce   ( char* args );
-void cliFunc_zeroPosition( char* args );
-
-char receiveUART0Char();
-
-void transmitUART0String( char* str );
-
-uint32_t readDistanceGauge();
-
 
 
 // ----- Variables -----
@@ -188,7 +173,7 @@ int main(void)
                                continue;
 
                        // Send USB Data
-                       usb_send();
+                       output_send();
 
                        // Clear sendKeypresses Flag
                        sendKeypresses = 0;
@@ -233,234 +218,4 @@ void pit0_isr(void)
 
 // ----- CLI Command Functions -----
 
-uint32_t readDistanceGauge()
-{
-       // Setup distance read parameters for iGaging Distance Scale
-       //       freq = 9kHz
-       // duty_cycle = 20%
-       // high_delay = (1/freq) *       (duty_cycle/100)
-       //  low_delay = (1/freq) * ((100-duty_cycle)/100)
-       uint8_t  bits       = 21; // 21 clock pulses, for 21 bits
-       uint32_t high_delay = 22; // Clock high time per pulse
-       uint32_t  low_delay = 89; // Clock low  time per pulse
-
-       // Data
-       uint32_t distInput = 0;
-
-       // Make sure clock is low initially
-       GPIOC_PCOR |= (1<<2); // Set Clock low
-
-       // Scan each of the bits
-       for ( uint8_t bit = 0; bit < bits; bit++ )
-       {
-               // Begin clock pulse
-               GPIOC_PSOR |= (1<<2); // Set Clock high
-
-               // Delay for duty cycle
-               delayMicroseconds( high_delay );
-
-               // End clock pulse
-               GPIOC_PCOR |= (1<<2); // Set Clock low
-
-               // Read Data Bit
-               distInput |= GPIOC_PDIR & (1<<1) ? (1 << bit) : 0;
-
-               // Delay for duty cycle
-               delayMicroseconds( low_delay );
-       }
-
-       return distInput;
-}
-
-void cliFunc_distRead( char* args )
-{
-       // Parse number from argument
-       //  NOTE: Only first argument is used
-       char* arg1Ptr;
-       char* arg2Ptr;
-       argumentIsolation_cli( args, &arg1Ptr, &arg2Ptr );
-
-       // Convert the argument into an int
-       int read_count = decToInt( arg1Ptr ) + 1;
-
-       // If no argument specified, default to 1 read
-       if ( *arg1Ptr == '\0' )
-       {
-               read_count = 2;
-       }
-
-       // Repeat reading as many times as specified in the argument
-       print( NL );
-       while ( --read_count > 0 )
-       {
-               // Prepare to print output
-               info_msg("Distance: ");
-
-               // Data
-               uint32_t distInput = readDistanceGauge() - distanceOffset;
-
-               // Output result
-               printInt32( distInput );
-
-               // Convert to mm
-               // As per http://www.shumatech.com/web/21bit_protocol?page=0,1
-               // 21 bits is 2560 CPI (counts per inch) (C/inch)
-               // 1 inch is 25.4 mm
-               // 2560 / 25.4 = 100.7874016... CPMM (C/mm)
-               // Or
-               // 1 count is 1/2560 = 0.000390625... inches
-               // 1 count is (1/2560) * 25.4 = 0.00992187500000000 mm = 9.92187500000000 um = 9921.87500000000 nm
-               // Since there are 21 bits (2 097 152 positions) converting to um is possible by multiplying by 1000
-               //    which is 2 097 152 000, and within 32 bits (4 294 967 295).
-               // However, um is still not convenient, so 64 bits (18 446 744 073 709 551 615) is a more accurate alternative.
-               // For each nm there are 2 097 152 000 000 positions.
-               // And for shits:
-               //    mm is 2 097 152                 :          0.009 921 875 000 mm : 32 bit
-               //    um is 2 097 152 000             :          9.921 875 000     um : 32 bit (ideal acc. for 32 bit)
-               //    nm is 2 097 152 000 000         :      9 921.875 000         nm : 64 bit
-               //    pm is 2 097 152 000 000 000     :  9 921 875.000             pm : 64 bit (ideal acc. for 64 bit)
-
-               // XXX Apparently shumatech was sorta wrong about the 21 bits of usage
-               // Yes there are 21 bits, but the values only go from ~338 to ~30681 which is less than 16 bits...
-               // This means that the conversion at NM can use 32 bits :D
-               // It's been noted that the multiplier should be 100.6 (and that it could vary from scale to scale)
-               uint32_t distNM = distInput * 9921;;
-               uint32_t distUM = distNM / 1000;
-               uint32_t distMM = distUM / 1000;
-
-               print("  ");
-               printInt32( distMM );
-               print(" mm  ");
-               printInt32( distUM );
-               print(" um  ");
-               printInt32( distNM );
-               print(" nm  ");
-
-               print( NL );
-
-               // Only delay if still counting
-               if ( read_count > 1 )
-                       delay( 50 );
-       }
-}
-
-
-void cliFunc_free( char* args )
-{
-       // Set the forceDistanceRead to 1, which will read until start has passed twice
-       forceDistanceRead = 1;
-}
-
-
-void cliFunc_gaugeHelp( char* args )
-{
-       print( NL
-"\033[1;32mForce Curve Gauge Help\033[0m" NL
-" \033[1;33mUsage Overview\033[0m" NL
-"  TODO" NL
-" \033[1;33mAdditional Command Details\033[0m" NL
-"  \033[1;35mdistRead\033[0m" NL
-"     Reads the current value from the distance gauge." NL
-"     If specified it will N repeated reads with a delay after each read. Useful for testing the distance gauge." NL
-"       e.g. \033[35mdistRead 250\033[0m" NL
-"  \033[1;35mfree\033[0m" NL
-"     Start free scanning force/distance reads." NL
-"     Will continue until the [start] distance point has been past twice." NL
-"  \033[1;35mimadaComm\033[0m" NL
-"     Sends a command to the Imada force gauge." NL
-"       e.g. \033[35mimadaComm D\033[0m" NL
-"     The commands supported by the gauge depends on the model. Listed below is for the DS2." NL
-"       K  Select g  units (default)" NL
-"       N  Select N  units" NL
-"       O  Select oz units" NL
-"       P  Select peak mode" NL
-"       T  Select real time mode (default)" NL
-"       Z  Zero out display/reading" NL
-"       Q  Turn off power" NL
-"       E  Read high/low set points" NL
-"       D  Read data from force gauge" NL
-"       E\033[35mHHHHLLLL\033[0m" NL
-"          Set the high/low setpoints, ignore decimals" NL
-"          \033[35mHHHH\033[0m is 4 digit high, \033[35mLLLL\033[0m is 4 digit low" NL
-"     Responses from the above commands." NL
-"       R  Command successful" NL
-"       E  Error/Invalid Command" NL
-"       E\033[35mHHHHLLLL\033[0m" NL
-"          Current high/low setpoints" NL
-"          \033[35mHHHH\033[0m is 4 digit high, \033[35mLLLL\033[0m is 4 digit low" NL
-"       \033[35m[value][units][mode]\033[0m" NL
-"          Data read response" NL
-"          \033[35m[value]\033[0m is force currently showing on the display (peak or realtime)" NL
-"          \033[35m[units]\033[0m is the configured force units" NL
-"          \033[35m[mode]\033[0m  is the current mode (peak or realtime)" NL
-"  \033[1;35mread\033[0m" NL
-"     Read the current force/distance value." NL
-"     If specified it will N repeated reads with a delay after each read." NL
-"       e.g. \033[35mread 125\033[0m" NL
-"  \033[1;35mstart\033[0m" NL
-"     Distance marker \033[35m[start]\033[0m for the start/end of a force curve measurement." NL
-"     While in free running mode, a special message is displayed when reaching the \033[35m[start]\033[0m point." NL
-"       \033[35m[start]\033[0m is defined by positioning the distance sensor at the position to start and running this command." NL
-               );
-}
-
-
-void cliFunc_read( char* args )
-{
-       // Parse number from argument
-       //  NOTE: Only first argument is used
-       char* arg1Ptr;
-       char* arg2Ptr;
-       argumentIsolation_cli( args, &arg1Ptr, &arg2Ptr );
-
-       // Convert the argument into an int
-       int read_count = decToInt( arg1Ptr ) + 1;
-
-       // If no argument specified, default to 1 read
-       if ( *arg1Ptr == '\0' )
-       {
-               read_count = 2;
-       }
-
-       // Set the overall read count to read_count
-       forceDistanceReadCount = read_count;
-}
-
-
-void cliFunc_start( char* args )
-{
-       // Read the current distance and set the new start/end position
-       distanceStart = readDistanceGauge();
-
-       print( NL );
-       info_msg("New start/end position: ");
-       printInt32( distanceStart - distanceOffset );
-}
-
-
-void cliFunc_stop( char* args )
-{
-       // Reset the forceDistanceRead and forceDistanceReadCount
-       forceDistanceRead = 0;
-       forceDistanceReadCount = 0;
-}
-
-
-void cliFunc_zeroForce( char* args )
-{
-       // Just use the imadaComm command sending the needed argument
-       char* commandArg = "Z";
-       imadaVerboseRead( commandArg );
-}
-
-
-void cliFunc_zeroPosition( char* args )
-{
-       // Read the current distance and set the new offset
-       distanceOffset = readDistanceGauge();
-
-       print( NL );
-       info_msg("New distance offset: ");
-       printInt32( distanceOffset );
-}
 
index 1028e94a183f412299c7cd846f763152d6c660f1..aa1362d391d5e2b5a28a2a98d57a38b3c7116de7 100644 (file)
@@ -1,6 +1,6 @@
 ###| CMAKE Kiibohd Controller Source Configurator |###
 #
-# Written by Jacob Alexander in 2011-2013 for the Kiibohd Controller
+# Written by Jacob Alexander in 2011-2014 for the Kiibohd Controller
 #
 # Released into the Public Domain
 #
@@ -46,11 +46,10 @@ endif ()
 ###
 # Path Setup
 #
-set(  ScanModulePath   "Scan/${ScanModule}"  )
-set( MacroModulePath  "Macro/${MacroModule}" )
+set(  ScanModulePath    "Scan/${ScanModule}"   )
+set( MacroModulePath   "Macro/${MacroModule}"  )
 set( OutputModulePath "Output/${OutputModule}" )
-set(   USBModulePath    "USB/${USBModule}"   )
-set( DebugModulePath  "Debug/${DebugModule}" )
+set( DebugModulePath   "Debug/${DebugModule}"  )
 
 #| Top-level directory adjustment
 set( HEAD_DIR "${CMAKE_CURRENT_SOURCE_DIR}" )
@@ -138,7 +137,7 @@ message( STATUS "Detected Scan Module Source Files:" )
 message( "${SCAN_SRCS}" )
 message( STATUS "Detected Macro Module Source Files:" )
 message( "${MACRO_SRCS}" )
-message( STATUS "Detected USB Module Source Files:" )
+message( STATUS "Detected Output Module Source Files:" )
 message( "${OUTPUT_SRCS}" )
 message( STATUS "Detected Debug Module Source Files:" )
 message( "${DEBUG_SRCS}" )