bidirectional communication with checksums (revised packed size - now only the struct size)