void frame(unsigned char dst[MACLEN], unsigned char src[MACLEN], unsigned count, unsigned char buf[MTU]) { // given packet type unsigned char packet_type[TYPELEN] = { 0xa, 0xb, 0xc, 0xd }; // given frame check sequence unsigned char checksum[CHECKLEN] = { 0x0, 0x0, 0x0, 0x0 }; unsigned char frame[FRAMELEN]; unsigned i, ptr = 0; // join frame sections ptr += framecpy(frame + ptr, dst, MACLEN); ptr += framecpy(frame + ptr, src, MACLEN); ptr += framecpy(frame + ptr, packet_type, TYPELEN); ptr += framecpy(frame + ptr, buf, count); ptr += framecpy(frame + ptr, checksum, CHECKLEN); for (i = 0; i < ptr; i++) { printf("%02x", frame[i]); } }
int main(int argc, char *argv[]) { char stdio[] = "-"; char *defaultfilev[1] = { stdio }; int filec = (argc == 1 ? 1 : argc - 1); char **filev = (argc == 1 ? defaultfilev : &argv[1]); LALFrameUFrFile *output; output = XLALFrameUFrFileOpen(stdio, "w"); if (!output) FAILURE("could not create output file\n"); while (filec-- > 0) { char *fname = *filev++; LALFrameUFrFile *input; LALFrameUFrTOC *toc; size_t nframe; size_t pos; input = XLALFrameUFrFileOpen(fname, "r"); if (!input) FAILURE("file %s not found\n", fname); toc = XLALFrameUFrTOCRead(input); if (!toc) FAILURE("no TOC found in file %s\n", fname); nframe = XLALFrameUFrTOCQueryNFrame(toc); if ((int)(nframe) <= 0) FAILURE("no frames found in file %s\n", fname); /* loop over frames in input file */ for (pos = 0; pos < nframe; ++pos) { LALFrameUFrameH *frame; frame = framecpy(input, pos); copydetectors(frame, input); copychannels(frame, input, pos, NULL); XLALFrameUFrameHWrite(output, frame); XLALFrameUFrameHFree(frame); } XLALFrameUFrFileClose(input); } XLALFrameUFrFileClose(output); return 0; }