
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned char cs1, cs2;

void csum(unsigned char c) {
  cs1 += c;
  cs2 += cs1;
}


int main(int argc,char *argv[])
{

    cs1 = cs2 = 0;

	csum(0x09-1);
    csum(0x10);
    csum(0x47);
    csum(0x4c);
    csum(0x41);
    csum(0x57);
    csum(0x01);
    csum(0x11);
	printf("Checksum type 1 of packet 16 09 10 47 4C 41 57 01 11 (55 F2) is %x %x.\n", 
                (unsigned int) cs1, (unsigned int) cs2);

    cs1 = cs2 = 0;

	csum(0x09);
    csum(0x10);
    csum(0x47);
    csum(0x54);
    csum(0x50);
    csum(0x57);
    csum(0x01);
    csum(0x30);
	cs1 = 512 - cs1 - cs2;
	printf("Checksum type 2 of packet 16 09 10 47 54 50 57 01 30 (F7 7D) is %x %x.\n", 
                (unsigned int) cs1, (unsigned int) cs2);

	return 0;
}