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

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Michael J. Spencer
Date:
Fri Feb 28 18:52:52 2014 -0800
Revision:
2:1df0b61d3b5a
Child:
3:f151d08d335c
Update to latest Smoothie.

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 #include <malloc.h>
Michael J. Spencer 2:1df0b61d3b5a 13
Michael J. Spencer 2:1df0b61d3b5a 14
Michael J. Spencer 2:1df0b61d3b5a 15 using namespace std;
Michael J. Spencer 2:1df0b61d3b5a 16 #include <string>
Michael J. Spencer 2:1df0b61d3b5a 17
Michael J. Spencer 2:1df0b61d3b5a 18 // we use objdump in the Makefile to import your config.default file into the compiled code
Michael J. Spencer 2:1df0b61d3b5a 19 // Since the two symbols below are derived from the filename, we need to change them if the filename changes
Michael J. Spencer 2:1df0b61d3b5a 20 extern char _binary_config_default_start;
Michael J. Spencer 2:1df0b61d3b5a 21 extern char _binary_config_default_end;
Michael J. Spencer 2:1df0b61d3b5a 22
Michael J. Spencer 2:1df0b61d3b5a 23
Michael J. Spencer 2:1df0b61d3b5a 24 FirmConfigSource::FirmConfigSource(uint16_t name_checksum){
Michael J. Spencer 2:1df0b61d3b5a 25 this->name_checksum = name_checksum;
Michael J. Spencer 2:1df0b61d3b5a 26 }
Michael J. Spencer 2:1df0b61d3b5a 27
Michael J. Spencer 2:1df0b61d3b5a 28 // Transfer all values found in the file to the passed cache
Michael J. Spencer 2:1df0b61d3b5a 29 void FirmConfigSource::transfer_values_to_cache( ConfigCache* cache ){
Michael J. Spencer 2:1df0b61d3b5a 30
Michael J. Spencer 2:1df0b61d3b5a 31 char* p = &_binary_config_default_start;
Michael J. Spencer 2:1df0b61d3b5a 32 // For each line
Michael J. Spencer 2:1df0b61d3b5a 33 while( p != &_binary_config_default_end ){
Michael J. Spencer 2:1df0b61d3b5a 34 process_char_from_ascii_config(*p++, cache);
Michael J. Spencer 2:1df0b61d3b5a 35 }
Michael J. Spencer 2:1df0b61d3b5a 36 }
Michael J. Spencer 2:1df0b61d3b5a 37
Michael J. Spencer 2:1df0b61d3b5a 38 // Return true if the check_sums match
Michael J. Spencer 2:1df0b61d3b5a 39 bool FirmConfigSource::is_named( uint16_t check_sum ){
Michael J. Spencer 2:1df0b61d3b5a 40 return check_sum == this->name_checksum;
Michael J. Spencer 2:1df0b61d3b5a 41 }
Michael J. Spencer 2:1df0b61d3b5a 42
Michael J. Spencer 2:1df0b61d3b5a 43 // Write a config setting to the file *** FirmConfigSource is read only ***
Michael J. Spencer 2:1df0b61d3b5a 44 void FirmConfigSource::write( string setting, string value ){
Michael J. Spencer 2:1df0b61d3b5a 45 //THEKERNEL->streams->printf("ERROR: FirmConfigSource is read only\r\n");
Michael J. Spencer 2:1df0b61d3b5a 46 }
Michael J. Spencer 2:1df0b61d3b5a 47
Michael J. Spencer 2:1df0b61d3b5a 48 // Return the value for a specific checksum
Michael J. Spencer 2:1df0b61d3b5a 49 string FirmConfigSource::read( uint16_t check_sums[3] ){
Michael J. Spencer 2:1df0b61d3b5a 50
Michael J. Spencer 2:1df0b61d3b5a 51 string value = "";
Michael J. Spencer 2:1df0b61d3b5a 52
Michael J. Spencer 2:1df0b61d3b5a 53 char* p = &_binary_config_default_start;
Michael J. Spencer 2:1df0b61d3b5a 54 // For each line
Michael J. Spencer 2:1df0b61d3b5a 55 while( p != &_binary_config_default_end ){
Michael J. Spencer 2:1df0b61d3b5a 56 value = process_char_from_ascii_config(*p++, check_sums);
Michael J. Spencer 2:1df0b61d3b5a 57 if (value.length())
Michael J. Spencer 2:1df0b61d3b5a 58 return value;
Michael J. Spencer 2:1df0b61d3b5a 59 }
Michael J. Spencer 2:1df0b61d3b5a 60
Michael J. Spencer 2:1df0b61d3b5a 61 return value;
Michael J. Spencer 2:1df0b61d3b5a 62 }
Michael J. Spencer 2:1df0b61d3b5a 63