Subversion Repositories HomeAutomation

Rev

Rev 1605 | Rev 1610 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1605 Rev 1607
Line 326... Line 326...
326
}
326
}
327
 
327
 
328
std::string Protocol::DecodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
328
std::string Protocol::DecodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
329
{
329
{
330
    unsigned long raw_bit_value = bitset.Read(start_bit, bit_length);
330
    unsigned long raw_bit_value = bitset.Read(start_bit, bit_length);
-
 
331
   
-
 
332
    //LOG.Debug("DecodeUint: raw_bit_value=" + boost::lexical_cast<std::string>(raw_bit_value));
331
   
333
   
332
    return boost::lexical_cast<std::string>((unsigned int)raw_bit_value);
334
    return boost::lexical_cast<std::string>((unsigned int)raw_bit_value);
333
}
335
}
334
 
336
 
335
void Protocol::EncodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
337
void Protocol::EncodeUint(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
Line 342... Line 344...
342
std::string Protocol::DecodeFloat(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
344
std::string Protocol::DecodeFloat(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
343
{
345
{
344
    float float_value = boost::lexical_cast<float>(this->DecodeInt(bitset, start_bit, bit_length)) / 64.0f;
346
    float float_value = boost::lexical_cast<float>(this->DecodeInt(bitset, start_bit, bit_length)) / 64.0f;
345
   
347
   
346
    return boost::lexical_cast<std::string>(float_value);
348
    return boost::lexical_cast<std::string>(float_value);
347
}
349
}
348
 
350
 
349
void Protocol::EncodeFloat(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
351
void Protocol::EncodeFloat(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
350
{
352
{
351
    int int_value = boost::lexical_cast<float>(value) * 64.0f;
353
    int int_value = boost::lexical_cast<float>(value) * 64.0f;
352
   
354
   
353
    this->EncodeInt(bitset, start_bit, bit_length, boost::lexical_cast<std::string>(int_value));
355
    this->EncodeInt(bitset, start_bit, bit_length, boost::lexical_cast<std::string>(int_value));
354
}
356
}
355
 
357
 
356
std::string Protocol::DecodeAscii(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
358
std::string Protocol::DecodeAscii(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
357
{
359
{
358
    std::string value;
360
    std::string value;
359
   
361
   
360
    for (unsigned int n = 0; n < bit_length; n += 8)
362
    for (unsigned int n = 0; n < bit_length; n += 8)
361
    {
363
    {
362
        unsigned long raw_value = bitset.Read(start_bit + n, 8);
364
        unsigned long raw_value = bitset.Read(start_bit + n, 8);
363
        value += (char)raw_value;
365
        value += (char)raw_value;
364
    }
366
    }
365
   
367
   
366
    return value;
368
    return value;
367
}
369
}
368
 
370
 
369
void Protocol::EncodeAscii(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
371
void Protocol::EncodeAscii(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length, std::string value)
370
{
372
{
-
 
373
    //LOG.Debug("EncodeAscii: " + value + ", length =" + boost::lexical_cast<std::string>(value.size()) + ", bit_length=" + boost::lexical_cast<std::string>(bit_length));
-
 
374
   
371
    for (unsigned int n = 0; n < bit_length; n += 8)
375
    for (unsigned int n = 0; n < bit_length; n += 8)
372
    {
376
    {
-
 
377
        if (n / 8 > value.size())
-
 
378
        {
-
 
379
            break;
-
 
380
        }
-
 
381
       
373
        bitset.Write(start_bit + n, 8, value[n / 8]);
382
        bitset.Write(start_bit + n, 8, value[n / 8]);
374
    }
383
    }
375
}
384
}
376
 
385
 
377
std::string Protocol::DecodeHexstring(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)
386
std::string Protocol::DecodeHexstring(type::Bitset& bitset, unsigned int start_bit, unsigned int bit_length)