************************ * From v0.23 to v0.24 * ************************ Date: 2012-04-09 --------------------------- Winterrupts.c - --------------------------- --> Changed function onLAIwakeUP. Monitorization pin corrected for pluviometer sensor --------------------------- WaspPWR.cpp - --------------------------- --> Changed function WaspPWR::switchesOFF. Necessary change in order to achieve the correct "low power consumption" in Waspmote --------------------------- WaspRTC - --------------------------- --> Changed function WaspRTC::getTemperature. Corrected the way the temperature is measured. The return type is float. --> Deleted attribute 'tempNegative' from class WaspRTC --> Changed attribute 'temp' type from uint8_t to float, in WaspRTC.h --> Changed function WaspRTC::resetVars. tempNegative initialization has been deleted. --------------------------- WaspGPRS_Pro - --------------------------- --> GPRS Pro module release! --> Included files WaspGPRS_Pro.cpp, WaspGPRS_Pro.h, WaspGPRS_Proconstants.h --------------------------- WaspSensorSmart_v20 - --------------------------- --> New Smart Metering board version --------------------------- WaspClasses.h - --------------------------- --> #include "WaspGPRS_Pro.h" --> #include "WaspGPRS_Proconstants.h" --> #include "WaspSensorSmart_v20.h" ************************ * From v0.22 to v0.23 * ************************ Date: 2012-02-23 --------------------------- WaspSensorAgr - --------------------------- --> Typo in 'WaspSensorAgr::readValue' function. In case of SENS_AGR_RADIATION the output is measured in Volts. So, the comment has been changed from "mV" to "V" --> Changed function 'WaspSensorAgr::sencera_conversion'. Now humidity is well calculated --> Changed function 'WaspSensorAgr::pressure_conversion'. Now pressure is well calculated --> Deleted function 'float WaspSensorAgr::humidity_conversion(int readValue)'. It was unused. --> Deleted function 'float WaspSensorAgr::temperature_conversion(int readValue)'. It was unused. --------------------------- WaspBT_Pro - --------------------------- --> Included new Class: 'WaspBT_Pro' in order to control the new Bluetooth module for Waspmote. Files: WaspBT_Pro.cpp, WaspBT_Pro.h --------------------------- WaspClasses.h - --------------------------- --> Include "WaspBT_Pro.h" --> Include "WaspWIFI.h" --------------------------- WaspXBee - --------------------------- --> Changed function WaspXBee::setMode. Now, UART1 is selected when setting on the XBee in socket1 --------------------------- WaspWIFI - --------------------------- --> WIFI module release! Included WaspWIFI class which manages the WIFI module. Files: WaspWIFI.cpp, WaspWIFI.h ============================ * From IDE v0.01 to v0.02 * ============================ Date: 2012/02/09 It is recommended to use this IDE version with apiv0.22 or older --------------------------- Boards.txt - --------------------------- --> Changed 'wasp01.upload.maximum_size=122880'. Maximum code size for Waspmote is 120KB. --> Changed fuses description: 'wasp01.bootloader.low_fuses=0xdf' 'wasp01.bootloader.high_fuses=0xd0' 'wasp01.bootloader.extended_fuses=0xf5' --------------------------- AVRDUDE - --------------------------- --> MACOS/WINDOWS version: Updated AVR libreries in order to compile correctly api v0.22 or older ********************** * From v0.21 to v0.22* ********************** Date: 2011/12/22 --------------------------- WaspBT.h - --------------------------- --> Changed 'setSecurity' function header comments. Now they are OK. --------------------------- WaspXBeecore.cpp - --------------------------- --> Changed 'new_firmware_packets' function. Remove XBee OFF when packets are missed. --> Changed 'checkOtapTimeout' function. Remove XBee OFF when timeout is reached. --> Changed 'treatData' function. Clear finish array when an error is procuded after parsing the data. --> Changed 'checkNewProgram' function. Clear reception struct after restarting the program. This allows to delete other restarting packets sent by other nodes. --------------------------- WaspSensorParking - --------------------------- --> Included WaspSensorParking.cpp and WaspSensorParking.h. This is the library related to the SmartParking board. --> Included WaspSensorParking.h in WaspClasses.h --------------------------- WInterrupts.c - --------------------------- --> Changed 'onHAIwakeUP' and 'onLAIwakeUP' routines. The conditions for pluviometer and anemometer sensor interruptions have been changed. DIGITAL2 is the monitorization pin for these interruptions. ********************** * From v0.20 to v0.21* ********************** --------------------------- WaspConstants.h - --------------------------- --> Added definition of UART0 and UART1 --------------------------- WaspXBee - --------------------------- --> Added new object 'XBee2' for using XBee modules through expansion board (UART1) --> Added new function 'WaspXBee::begin(uint8_t uart, uint16_t speed)' which allows to choose between both UARTs (0 or 1) --> Changed function 'WaspXBee::setMode' --------------------------- WaspXBeeCore - --------------------------- --> Changed function 'WaspXBeeCore::setNodeIdentifier' --> Changed function 'WaspXBeeCore::scanNetwork' --> Changed function 'WaspXBeeCore::nodeSearch' --> Changed function 'WaspXBeeCore::getRSSI' --> Changed function 'WaspXBeeCore::sendCommandAT' --> Changed function 'WaspXBeeCore::ON' --> Changed function 'WaspXBeeCore::OFF' --> Changed function 'WaspXBeeCore::sleep' --> Changed function 'WaspXBeeCore::wake' --> Changed function 'WaspXBeeCore::sendXBeePriv' --> Changed function 'WaspXBeeCore::send' --> Changed function 'WaspXBeeCore::freeXBee' --> Changed function 'WaspXBeeCore::gen_send' --> Changed function 'WaspXBeeCore::parse_message' --> Changed function 'WaspXBeeCore::txStatusResponse' --> Changed function 'WaspXBeeCore::txZBStatusResponse' --> Changed function 'WaspXBeeCore::new_firmware_packets' --> Changed function 'WaspXBeeCore::checkOtapTimeout' --> Changed function 'WaspXBeeCore::treatData' --> Changed function 'WaspXBeeCore::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used)' --> Added function 'WaspXBeeCore::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used, uint8_t uart_used)' --> Added function 'WaspXBeeCore::available' --> Added function 'WaspXBeeCore::flush' --------------------------- WaspXBee802 - --------------------------- --> Changed function 'WaspXBee802::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used)' --> Added function 'WaspXBee802::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used, uint8_t uart_used)' --------------------------- WaspXBeeDM - --------------------------- --> Changed function 'WaspXBeeDM::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used)' --> Added function 'WaspXBeeDM::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used, uint8_t uart_used)' --------------------------- WaspXBeeZB - --------------------------- --> Changed function 'WaspXBeeZB::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used)' --> Added function 'WaspXBeeZB::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used, uint8_t uart_used)' --------------------------- WaspXBee868 - --------------------------- --> Changed function 'WaspXBee868::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used)' --> Added function 'WaspXBee868::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used, uint8_t uart_used)' --------------------------- WaspXBeeXSC - --------------------------- --> Changed function 'WaspXBee802::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used)' --> Added function 'WaspXBee802::init(uint8_t protocol_used, uint8_t frequency, uint8_t model_used, uint8_t uart_used)' --> Added attribute 'uart' --> Changed function 'WaspXBeeXSC::setCommandMode' --> Changed function 'WaspXBeeXSC::exitCommandMode' --> Changed function 'WaspXBeeXSC::setVendorID' --> Changed function 'WaspXBeeXSC::getVendorID' --> Changed function 'WaspXBeeXSC::setBaudRate' --> Changed function 'WaspXBeeXSC::getBaudRate' --> Changed function 'WaspXBeeXSC::getRSSI' --> Changed function 'WaspXBeeXSC::setDestAddress' --> Changed function 'WaspXBeeXSC::getDestAddress' --> Changed function 'WaspXBeeXSC::setReceiveErrorCount' --> Changed function 'WaspXBeeXSC::getReceiveErrorCount' --> Changed function 'WaspXBeeXSC::forceWakeUP' --> Changed function 'WaspXBeeXSC::forceReset' --> Changed function 'WaspXBeeXSC::setReceiveGoodCount' --> Changed function 'WaspXBeeXSC::getReceiveGoodCount' --> Changed function 'WaspXBeeXSC::setHoppingChannel' --> Changed function 'WaspXBeeXSC::getHoppingChannel' --> Changed function 'WaspXBeeXSC::setTimeBeforeWakeUP' --> Changed function 'WaspXBeeXSC::getTimeBeforeWakeUP' --> Changed function 'WaspXBeeXSC::setTimeWakeUpInit' --> Changed function 'WaspXBeeXSC::getTimeWakeUpInit' --> Changed function 'WaspXBeeXSC::setAddressMask' --> Changed function 'WaspXBeeXSC::getAddressMask' --> Changed function 'WaspXBeeXSC::setPinWakeUP' --> Changed function 'WaspXBeeXSC::getPinWakeUP' --> Changed function 'WaspXBeeXSC::restoreDefaults' --> Changed function 'WaspXBeeXSC::setDelaySlots' --> Changed function 'WaspXBeeXSC::getDelaySlots' --> Changed function 'WaspXBeeXSC::setPacketTimeout' --> Changed function 'WaspXBeeXSC::getPacketTimeout' --> Changed function 'WaspXBeeXSC::setRSSItime' --> Changed function 'WaspXBeeXSC::getRSSItime' --> Changed function 'WaspXBeeXSC::setRetries' --> Changed function 'WaspXBeeXSC::getRetries' --> Changed function 'WaspXBeeXSC::getRSSIvalue' --> Changed function 'WaspXBeeXSC::setStopBits' --> Changed function 'WaspXBeeXSC::getStopBits' --> Changed function 'WaspXBeeXSC::getSourceMacHigh' --> Changed function 'WaspXBeeXSC::getSourceMacLow' --> Changed function 'WaspXBeeXSC::setSleepMode' --> Changed function 'WaspXBeeXSC::getSleepMode' --> Changed function 'WaspXBeeXSC::setAwakeTime' --> Changed function 'WaspXBeeXSC::getAwakeTime' --> Changed function 'WaspXBeeXSC::setTimeBeforeInit' --> Changed function 'WaspXBeeXSC::setTransmitErrorCount' --> Changed function 'WaspXBeeXSC::getTransmitErrorCount' --> Changed function 'WaspXBeeXSC::setTransmitLimit' --> Changed function 'WaspXBeeXSC::getTransmitLimit' --> Changed function 'WaspXBeeXSC::writeValues' --> Changed function 'WaspXBeeXSC::sendData' --> Changed function 'WaspXBeeXSC::readData' --> Changed function 'WaspXBeeXSC::sendCommandAT' --> Changed function 'WaspXBeeXSC::sleep' --> Changed function 'WaspXBeeXSC::wake' --> Changed function 'WaspXBeeXSC::clean' --> Changed function 'WaspXBeeXSC::check' --------------------------- WaspBT - --------------------------- --> Added new 'WaspBT::ON(uint8_t uart)' function --> Changed function 'WaspBT::ON()' --> Added attribute _uart to store the opened UART --> Changed function 'WaspBT::parse_data(const char* answer)' --> Changed function 'WaspBT::get_MTU' --> Changed function 'WaspBT::printData' --> Changed function 'WaspBT::OFF' --> Changed function 'WaspBT::getOwnMac' --> Changed function 'WaspBT::data_request' --> Changed function 'WaspBT::setSecurity' --> Changed function 'WaspBT::setPublicName' --> Changed function 'WaspBT::createConnection' --> Changed function 'WaspBT::setServiceParameters' --> Changed function 'WaspBT::removeTrustedDevice' --> Changed function 'WaspBT::sendData' --> Changed function 'WaspBT::setAutoAccept' --> Changed function 'WaspBT::setDiscoveryOptions' --> Changed function 'WaspBT::discoverDevice' --------------------------- WaspSensorSmart - --------------------------- --> Changed 'setLoadResistor' function --> Changed 'setAmplifierGain' function --------------------------- WaspSD - --------------------------- --> Changed fucntion 'WaspSD::indexOf'. Fixed issue when pattern does not exist --------------------------- EXPANSION BOARD Release - --------------------------- ********************** * From v0.19 to v0.20* ********************** --------------- BT - --------------- --> Changed the function 'WaspBT::scanNetwork' including the initialization of the whole data structure --------------- XBEE - --------------- --> Included persistence functionality when answering OTA packets to the Gateway (see all related OTA functions) --> Included new function: WaspXBeeCore::checkOtapTimeout(). It is dedicated to control OTA's timeout during a firmware sending. It MUST be called inside Waspmote's code. --> Changed comparing condition for OTA packets in function WaspXBeeCore::new_firmware_received() in case of receiving "868 or 900 Multicast" (Line 5754) --> Deleted "if" condition for OTA packets in function WaspXBeeCore::new_firmware_received() in case of receiving "868 or 900 Multicast" (Line 5762) --> Deleted two useless attributes from WaspXBeeCore: 'current_ID' and 'current_DATE' --> Deleted object instantiation "WaspXBeeCore xbee = WaspXBeeCore();" in 'WaspXBeeCore.cpp'. Deleted object declaration "extern WaspXBeeCore xbee;" in 'WaspXBeeCore.h'. Deleted XBEE_HIBERNATE option inside WaspXBee::setMode function. --------------- MEMORY - --------------- --> Added the new 'MemoryFree' class which includes freeMemory function in order to get the available memory in SRAM. (New files: MemoryFree.cpp and MemoryFree.h). Changes in WaspClasses.h: #include "MemoryFree.h" --------------- UTILS - --------------- --> Deleted 'getFreeMemory' function. Deleted 'freeMemory' attribute from class WaspUtils --> Moved 'inBuffer' attribute and 'clearbuffer' function to WaspGPS class --------------- GPS - --------------- --> Included 'inBuffer' attribute and 'clearbuffer' function from WaspUtils class --> Changed several 'get*' type functions => Change MAX_ARGS to MAX_ARG_LENGTH when filling attributes inside these functions. This way possible variable overflow will be avoided --> Changed several functions which use 'while' loop with millis(). Included a condition to avoid millis() overflow failure: if( millis()-previous < 0 ) previous=millis(); //avoid millis overflow problem --------------- GPRS - --------------- --> Changed functions which use 'while' loop with millis(). Included a condition to avoid millis() overflow failure: if( millis()-previous < 0 ) previous=millis(); //avoid millis overflow problem --------------- Sensor Agriculture - --------------- --> Changed WaspSensorAgr::readPluviometer function which use 'while' loop with millis(). Included a condition to avoid millis() overflow failure: if( millis()-start_pluviometer < 0 ) start_pluviometer=millis(); //avoid millis overflow problem --------------- WaspXBeeCore - --------------- --> Changed functions which use 'while' loop with millis(). Included a condition to avoid millis() overflow failure: if( millis()-previous < 0 ) previous=millis(); //avoid millis overflow problem --------------- WaspXBeeXSC - --------------- --> Changed functions which use 'while' loop with millis(). Included a condition to avoid millis() overflow failure: if( millis()-previous < 0 ) previous=millis(); //avoid millis overflow problem --------------- RTC - --------------- --> Changed 'WaspRTC::getTimestamp' function using a class attribute instead of a local pointer --> Included "timeStamp" attribute in order to save time in "dow, YY/MM/DD - HH:MM.SS" format --------------- SmartCities - --------------- --> SmartCities Release: Creation of a new class called 'WaspSensorCities' in files WaspSensorCities.cpp and WaspSensorCities.h --> included this class in WaspClasses.h --> Added constants in WaspConstants.h ********************** * From v0.18 to v0.19* ********************** --------------- PWR - --------------- --> Changed the function 'getBatteryLevel' to be more accurate --> Included the function 'getBatteryVolts' to know the voltage level of the battery --> Changed the function 'reboot' to jump exactly to the bootloader address --------------- XBEE - --------------- --> Changed the function 'WaspXBeeCore::treatData' including the case of receiving packets with packetID=0xF9 --> Changed the function 'WaspXBeeCore::send(uint8_t* address, uint8_t* data)' and ' WaspXBeeCore::send(char* address, uint8_t* data)' ********************** * From v0.17 to v0.18* ********************** --------------- BT - --------------- --> The variable 'devices_found' is reset to '0' in every call to 'scanNetwork' --------------- UTILS - --------------- --> The character to separate integer and decimal part is '.' instead of ',' in function 'float2String' --> Added a '\0' to the end of the string created in 'float2String' --> Changed the function 'getFreeMemory' to make it faster --------------- RTC - --------------- --> Changed the way in which time/alarms are returned. Strings now always have 2 digits for each part even if they are less than '10' --------------- OTA - --------------- --> OTA supported ********************** * From v0.16 to v0.17* ********************** --------------- GENERAL - --------------- --> Fixed a bug inside 'twi.c' that wrote outside allocated memory --> Changed the way in which memory allocations are done. Now, almost all the variables are allocated using dynamic memory inside the functions, and they return an error if there is no enough free memory --> Fixed all the functions that didn't return the same as they were expected to --> Deleted all the unused variables inside the local functions --> Modified the way in which the strings are passed to functions. Now, all the strings that are not going to be modified are passed as const char* to avoid compiler warnings ********************** * From v0.15 to v0.16* ********************** --------------- GPRS - --------------- --> Changed the function 'ON' to support the new GPRS boards --> Added the function 'OFF' (only available in the new GPRS boards) --------------- BT - --------------- --> Fixed a bug in the function 'scanNetwork' that hang up when discovering more than 6 devices --------------- XBee - --------------- --> Fixed a bug related to function 'setLinkKey' ********************** * From v0.14 to v0.15* ********************** --------------- GENERAL - --------------- --> Changed the include statements to make the compilation faster --------------- RTC - --------------- --> Fixed a bug related to the change of month --------------- GPRS - --------------- --> Changed the function 'sendCommand' to avoid overflow problems --------------- SENSORS - --------------- --> Changed the way in which the 'watermark' sensor is read --------------- PWR - --------------- --> Fixed a bug in Hibernate function. Now it works fine with Sensor boards ********************** * From v0.13 to v0.14* ********************** --------------- SENSORS - --------------- --> Added the Smart Metering library. Some constants has been added to support its functionality ********************** * From v0.12 to v0.13* ********************** --------------- GPRS - --------------- --> Changed the way in which the flag is handled to avoid a bug when closing sockets --> Modified the function 'sendData' to fix a bug that hanged up the module --------------- XBee - --------------- --> Modified the function 'sendCommandAT' to fix a bug when using parameters --> Modified the functions to send and receive packets, fixing some bugs related to '16B' and '64B' @ 802.15.4 ********************** * From v0.11 to v0.12* ********************** --------------- XBee - --------------- --> Changed the time the function 'parse_message' waits for an answer when an ED is performed --------------- Agriculture - --------------- --> Fixed a bug related to the pluviometer's interruption ********************** * From v0.10 to v0.11* ********************** --------------- Wire - --------------- --> Fixed a bug related to the buffers. The buffers now are static to avoid problems --------------- POWER - --------------- --> Function 'ifHibernate' and 'hibernate' have been changed to fix the problems when using GPS or GPRS after hibernating --------------- RTC - --------------- --> A 'clearAlarmFlag' is done every time the RTC is turned ON ********************** * From v0.9 to v0.10 * ********************** --------------- GPRS - --------------- --> Added a function to close FTP connections --> Improved the way in which the FTP are handled --------------- SD CARD - --------------- --> Fixed a bug that was making a bad behavior in GPRS and GPS functions related to the SD card (FTP and ephemeris) ********************* * From v0.8 to v0.9 * ********************* --------------- GPRS - --------------- --> Fixed a bug in sending data via sockets --------------- AGR BOARD - --------------- --> Added a condition to turn on the ADCs from the beginning --------------- POWER - --------------- --> Function 'ifHibernate' has been changed to improve the 'hibernate' behavior. Now, 'ifHibernate' must be executed in the 'setup' --------------- ACCELEROMETER - --------------- --> Fixed a bug in 'getX', 'getY' and 'getZ' --------------- GAS BOARD - --------------- --> Changed the constant 'SENS_NO2' by 'SENS_SOCKET2B'. Now this board allows to connect to this socket two more sensors such as O3 and VOC ********************* * From v0.7 to v0.8 * ********************* --------------- POWER - --------------- --> Fixed a bug with 'deepSleep'. Now there is no problem in using UART1 after coming from a deepSleep --------------- I2C - --------------- --> Improved the way in which I2C is closed by the modules. New conditions have been added to sensor boards, accelerometer and RTC --------------- GPRS - --------------- --> New variable 'connected' that specifies if the GPRS is connected to the network --> Improved the way it starts fixing a bug related to the RTC ********************* * From v0.6 to v0.7 * ********************* --------------- I2C - --------------- --> Improved the way in which the I2C is opened and closed. New variable has been included in 'Wire' class, which is used in the other libraries to know if I2C has been opened or closed --------------- GPRS - --------------- --> New functions 'reset', 'getIMEI', 'getIMSI' --> Improved the handling of sockets, specially the socket ID. Now it is an array to support up to 200 simultaneous connections --------------- POWER - --------------- --> New function 'reboot'. This function reboots Waspmote --------------- XBEE - --------------- --> Bug fixed in function 'sendCommandAT' ********************* * From v0.4 to v0.6 * ********************* --------------- ACCELEROMETER - --------------- --> New function 'setSamplingRate' --> New function 'ON' --> New Free Fall and Direction Change Examples --------------- SD CARD - --------------- --> New way of reading data using 'cat'. Now it is faster, reading 10 characters each time instead of 1 --> New functions 'ON' and 'OFF' --------------- GPRS - --------------- --> New functions 'ON' and 'OFF' --------------- GPS - --------------- --> New functions 'ON' and 'OFF' --> Function 'close' changed. Now it closes the multiplexer too --> New function 'getPosition'. It gets all the coordinates and time/date, updating the associated variables. --> New way of updating the variables related to coordinates, time/date. Now there are no pointers so the variables are independents --------------- POWER - --------------- --> New resistor value in the function 'setLowBatteryThreshold'. Now it is 200K --> New condition in 'hibernate' function to stay forever once the hibernate mode has been stablisehd --------------- RTC - --------------- --> New functions 'ON' and 'OFF' --> New function 'setTimeFromGPS'. It sets the time/date from the GPS variables --------------- XBEE - --------------- --> New function 'OFF' --> New function 'send'. It sends a packet without API headers in a simple way