Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Bigcheese
Date:
Sun Mar 02 06:33:08 2014 +0000
Revision:
3:f151d08d335c
Parent:
2:1df0b61d3b5a
Bunch of stuff. Need to locally merge in updated USB changes.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 2:1df0b61d3b5a 1 /*
Michael J. Spencer 2:1df0b61d3b5a 2 This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
Michael J. Spencer 2:1df0b61d3b5a 3 Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Michael J. Spencer 2:1df0b61d3b5a 4 Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Michael J. Spencer 2:1df0b61d3b5a 5 You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>.
Michael J. Spencer 2:1df0b61d3b5a 6 */
Michael J. Spencer 2:1df0b61d3b5a 7
Michael J. Spencer 2:1df0b61d3b5a 8 #include "libs/Kernel.h"
Michael J. Spencer 2:1df0b61d3b5a 9 #include "ConfigValue.h"
Michael J. Spencer 2:1df0b61d3b5a 10 #include "FirmConfigSource.h"
Michael J. Spencer 2:1df0b61d3b5a 11 #include "ConfigCache.h"
Michael J. Spencer 2:1df0b61d3b5a 12
Michael J. Spencer 2:1df0b61d3b5a 13
Michael J. Spencer 2:1df0b61d3b5a 14 using namespace std;
Michael J. Spencer 2:1df0b61d3b5a 15 #include <string>
Michael J. Spencer 2:1df0b61d3b5a 16
Michael J. Spencer 2:1df0b61d3b5a 17 // we use objdump in the Makefile to import your config.default file into the compiled code
Michael J. Spencer 2:1df0b61d3b5a 18 // Since the two symbols below are derived from the filename, we need to change them if the filename changes
Michael J. Spencer 2:1df0b61d3b5a 19 extern char _binary_config_default_start;
Michael J. Spencer 2:1df0b61d3b5a 20 extern char _binary_config_default_end;
Michael J. Spencer 2:1df0b61d3b5a 21
Michael J. Spencer 2:1df0b61d3b5a 22
Michael J. Spencer 2:1df0b61d3b5a 23 FirmConfigSource::FirmConfigSource(uint16_t name_checksum){
Michael J. Spencer 2:1df0b61d3b5a 24 this->name_checksum = name_checksum;
Michael J. Spencer 2:1df0b61d3b5a 25 }
Michael J. Spencer 2:1df0b61d3b5a 26
Michael J. Spencer 2:1df0b61d3b5a 27 // Transfer all values found in the file to the passed cache
Michael J. Spencer 2:1df0b61d3b5a 28 void FirmConfigSource::transfer_values_to_cache( ConfigCache* cache ){
Michael J. Spencer 2:1df0b61d3b5a 29
Michael J. Spencer 2:1df0b61d3b5a 30 char* p = &_binary_config_default_start;
Michael J. Spencer 2:1df0b61d3b5a 31 // For each line
Michael J. Spencer 2:1df0b61d3b5a 32 while( p != &_binary_config_default_end ){
Michael J. Spencer 2:1df0b61d3b5a 33 process_char_from_ascii_config(*p++, cache);
Michael J. Spencer 2:1df0b61d3b5a 34 }
Michael J. Spencer 2:1df0b61d3b5a 35 }
Michael J. Spencer 2:1df0b61d3b5a 36
Michael J. Spencer 2:1df0b61d3b5a 37 // Return true if the check_sums match
Michael J. Spencer 2:1df0b61d3b5a 38 bool FirmConfigSource::is_named( uint16_t check_sum ){
Michael J. Spencer 2:1df0b61d3b5a 39 return check_sum == this->name_checksum;
Michael J. Spencer 2:1df0b61d3b5a 40 }
Michael J. Spencer 2:1df0b61d3b5a 41
Michael J. Spencer 2:1df0b61d3b5a 42 // Write a config setting to the file *** FirmConfigSource is read only ***
Michael J. Spencer 2:1df0b61d3b5a 43 void FirmConfigSource::write( string setting, string value ){
Michael J. Spencer 2:1df0b61d3b5a 44 //THEKERNEL->streams->printf("ERROR: FirmConfigSource is read only\r\n");
Michael J. Spencer 2:1df0b61d3b5a 45 }
Michael J. Spencer 2:1df0b61d3b5a 46
Michael J. Spencer 2:1df0b61d3b5a 47 // Return the value for a specific checksum
Michael J. Spencer 2:1df0b61d3b5a 48 string FirmConfigSource::read( uint16_t check_sums[3] ){
Michael J. Spencer 2:1df0b61d3b5a 49
Michael J. Spencer 2:1df0b61d3b5a 50 string value = "";
Michael J. Spencer 2:1df0b61d3b5a 51
Michael J. Spencer 2:1df0b61d3b5a 52 char* p = &_binary_config_default_start;
Michael J. Spencer 2:1df0b61d3b5a 53 // For each line
Michael J. Spencer 2:1df0b61d3b5a 54 while( p != &_binary_config_default_end ){
Michael J. Spencer 2:1df0b61d3b5a 55 value = process_char_from_ascii_config(*p++, check_sums);
Michael J. Spencer 2:1df0b61d3b5a 56 if (value.length())
Michael J. Spencer 2:1df0b61d3b5a 57 return value;
Michael J. Spencer 2:1df0b61d3b5a 58 }
Michael J. Spencer 2:1df0b61d3b5a 59
Michael J. Spencer 2:1df0b61d3b5a 60 return value;
Michael J. Spencer 2:1df0b61d3b5a 61 }
Michael J. Spencer 2:1df0b61d3b5a 62