123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #ifndef ARPCPRINT_SOURCE
- #define ARPCPRINT_SOURCE
- #include <stdio.h>
- #include <stddef.h>
- #include "../tools/types.h"
- #include "../tools/endian.h"
- #include "../tools/memory.h"
- #include "../mme/mme.h"
- void ARPCPrint (FILE * fp, void const * memory, size_t extent)
- {
- #ifndef __GNUC__
- #pragma pack (push,1)
- #endif
- struct __packed vs_arpc_data
- {
- uint32_t BYPASS;
- uint16_t ARPCID;
- uint16_t DATALENGTH;
- uint8_t DATAOFFSET;
- uint8_t RESERVED [3];
- uint16_t ARGOFFSET;
- uint16_t STROFFSET;
- uint16_t ARGLENGTH;
- uint16_t STRLENGTH;
- uint8_t LIST [1];
- }
- * data = (struct vs_arpc_data *)(memory);
- #ifndef __GNUC__
- #pragma pack (pop)
- #endif
- uint32_t * argp = (uint32_t *)(&data->LIST [LE16TOH (data->ARGOFFSET)]);
- uint16_t argc = LE16TOH (data->ARGLENGTH) >> 2;
- while (argc--)
- {
- *argp = LE32TOH (*argp);
- argp++;
- }
- #if defined (__UCLIBC__) || defined (__FREESCALE__)
- argp = (uint32_t *)(&data->LIST [LE16TOH (data->ARGOFFSET)]);
- fprintf (fp, (char *)(&data->LIST [LE16TOH (data->STROFFSET)]), argp [0], argp [1], argp [2], argp [3], argp [4], argp [5], argp [6], argp [7], argp [8], argp [9], argp [10], argp [11], argp [12], argp [13], argp [14], argp [15], argp [16], argp [17], argp [18], argp [19], argp [20], argp [21], argp [22], argp [23], argp [24], argp [25], argp [26], argp [27], argp [28], argp [29], argp [30], argp [31], argp [32], argp [33], argp [34], argp [35], argp [36], argp [37], argp [38], argp [39]);
- #else
- vfprintf (fp, (char *)(&data->LIST [LE16TOH (data->STROFFSET)]), (void *)(&data->LIST [LE16TOH (data->ARGOFFSET)]));
- #endif
- fprintf (fp, "\n");
- fflush (fp);
- return;
- }
- #endif
|