Changeset afa1e8


Ignore:
Timestamp:
01/26/12 14:38:42 (4 months ago)
Author:
Stefan Persson <stefan.persson@…>
Branches:
('master', 'deebf2045e7119c339412580f37a1e653f7d5715')('controller-upgrade', '00f95d22e12d96ef089e0902ef62ae8ce841dc6f')
Children:
ee8f3b41d0207f6a981fa9406fbed01fda1a7411
Parents:
bf72debefba5c47023afd5993290995c613e4185
git-author:
Stefan Persson <stefan.persson@telldus.se>2012-01-26 14:38:42+01:00
git-committer:
Stefan Persson <stefan.persson@telldus.se>2012-01-26 14:38:42+01:00
Message:

Changed usage of strol method, so that windows uses _strtoui64 instead. Closes #172, #175

Location:
telldus-core
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • telldus-core/common/Strings.cpp

    r2ec2da rafa1e8  
    145145*/ 
    146146 
     147uint64_t TelldusCore::hexTo64l(const std::string data){ 
     148#ifdef _WINDOWS 
     149        return _strtoui64(data.c_str(), NULL, 16); 
     150#else 
     151        return strtol(data.c_str(), NULL, 16); 
     152#endif 
     153} 
     154 
    147155int TelldusCore::wideToInteger(const std::wstring &input){ 
    148156        std::wstringstream inputstream; 
  • telldus-core/common/Strings.h

    r716deb rafa1e8  
    44#include <string> 
    55#include <stdarg.h> 
     6#ifdef _MSC_VER 
     7typedef unsigned __int8 uint8_t; 
     8typedef unsigned __int16 uint16_t; 
     9typedef unsigned __int32 uint32_t; 
     10typedef unsigned __int64 uint64_t; 
     11#else 
     12#include <stdint.h> 
     13#endif 
    614 
    715namespace TelldusCore { 
     
    1422        //std::wstring intToWStringSafe(int value); 
    1523        std::string intToString(int value); 
     24        uint64_t hexTo64l(const std::string data); 
    1625        std::string wideToString(const std::wstring &input); 
    1726 
  • telldus-core/service/ProtocolFineoffset.cpp

    racdf57 rafa1e8  
    11#include "ProtocolFineoffset.h" 
     2#include "Strings.h" 
    23#include <stdlib.h> 
    34#include <sstream> 
    45#include <iomanip> 
    5 #ifdef _MSC_VER 
    6 typedef unsigned __int8 uint8_t; 
    7 typedef unsigned __int16 uint16_t; 
    8 #else 
    9 #include <stdint.h> 
    10 #endif 
    116 
    127std::string ProtocolFineoffset::decodeData(ControllerMessage &dataMsg) 
     
    1712        } 
    1813 
    19         uint8_t checksum = strtol(data.substr(data.length()-2).c_str(), NULL, 16); 
     14        uint8_t checksum = (uint8_t)TelldusCore::hexTo64l(data.substr(data.length()-2)); 
    2015        data = data.substr(0, data.length()-2); 
    2116 
    22         uint8_t humidity = strtol(data.substr(data.length()-2).c_str(), NULL, 16); 
     17        uint8_t humidity = (uint8_t)TelldusCore::hexTo64l(data.substr(data.length()-2)); 
    2318        data = data.substr(0, data.length()-2); 
    2419 
    25         uint16_t value = strtol(data.substr(data.length()-3).c_str(), NULL, 16); 
     20        uint16_t value = (uint16_t)TelldusCore::hexTo64l(data.substr(data.length()-3)); 
    2621        double temperature = (value & 0x7FF)/10.0; 
    2722 
     
    3227        data = data.substr(0, data.length()-3); 
    3328 
    34         uint16_t id = strtol(data.c_str(), NULL, 16) & 0xFF; 
     29        uint16_t id = (uint16_t)TelldusCore::hexTo64l(data) & 0xFF; 
    3530 
    3631        std::stringstream retString; 
  • telldus-core/service/ProtocolMandolyn.cpp

    r16a9b8 rafa1e8  
    11#include "ProtocolMandolyn.h" 
     2#include "Strings.h" 
    23#include <stdlib.h> 
    34#include <sstream> 
    45#include <iomanip> 
    56 
    6 #ifdef _MSC_VER 
    7 typedef unsigned __int8 uint8_t; 
    8 typedef unsigned __int32 uint32_t; 
    9 #else 
    10 #include <stdint.h> 
    11 #endif 
    12  
    137std::string ProtocolMandolyn::decodeData(ControllerMessage &dataMsg) 
    148{ 
    159        std::string data = dataMsg.getParameter("data"); 
    16         uint32_t value = strtol(data.c_str(), NULL, 16); 
     10        uint32_t value = (uint32_t)TelldusCore::hexTo64l(data); 
    1711 
    1812        bool parity = value & 0x1; 
  • telldus-core/service/ProtocolOregon.cpp

    rf58793 rafa1e8  
    11#include "ProtocolOregon.h" 
     2#include "Strings.h" 
    23#include <stdlib.h> 
    34#include <sstream> 
    45#include <iomanip> 
    5 #ifdef _MSC_VER 
    6 typedef unsigned __int8 uint8_t; 
    7 typedef unsigned __int64 uint64_t; 
    8 #else 
    9 #include <stdint.h> 
    10 #endif 
    116 
    127std::string ProtocolOregon::decodeData(ControllerMessage &dataMsg) 
     
    2520 
    2621std::string ProtocolOregon::decodeEA4C(const std::string &data) { 
    27         uint64_t value = strtol(data.c_str(), NULL, 16); 
    28  
     22        uint64_t value = TelldusCore::hexTo64l(data); 
     23         
    2924        uint8_t checksum = 0xE + 0xA + 0x4 + 0xC; 
    3025        checksum -= (value & 0xF) * 0x10; 
     
    7065 
    7166std::string ProtocolOregon::decode1A2D(const std::string &data) { 
    72         uint64_t value = strtol(data.c_str(), NULL, 16); 
     67        uint64_t value = TelldusCore::hexTo64l(data); 
    7368        uint8_t checksum2 = value & 0xFF; 
    7469        value >>= 8; 
Note: See TracChangeset for help on using the changeset viewer.