00001
00002
00003
00004
00005
00006
00007
00008
00009 static const char rcsid[] __attribute__((used)) = "$Id: Packet.cpp 1230 2014-11-16 02:32:01Z sella $";
00010
00011 #include "Packet.h"
00012
00013 using namespace sella::util;
00014
00015 uint8_t Packet::csum(uint8_t *buf, int bytes) throw () {
00016 uint16_t *buf16 = (uint16_t*) buf;
00017 uint32_t sum;
00018
00019 for (sum = 0; bytes > 0; bytes -= 2) {
00020 sum += *buf16++;
00021 }
00022
00023 sum = (sum >> 16) + (sum & 0xffff);
00024 sum += (sum >> 16);
00025
00026 return ~sum;
00027 }
00028
00029 uint16_t Packet::csum(uint16_t *buf, int words) throw () {
00030 uint32_t sum;
00031
00032 for (sum = 0; words > 0; words--) {
00033 sum += *buf++;
00034 }
00035
00036 sum = (sum >> 16) + (sum & 0xffff);
00037 sum += (sum >> 16);
00038
00039 return ~sum;
00040 }
00041
00042
00043
00044