diff options
Diffstat (limited to 'pseudoais.c')
-rw-r--r-- | pseudoais.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/pseudoais.c b/pseudoais.c index ff2c5a6d..93a6658c 100644 --- a/pseudoais.c +++ b/pseudoais.c @@ -64,6 +64,7 @@ static unsigned int ais_binary_to_ascii(unsigned char *bits, unsigned int len) for (l=0;l<len;l+=6) { bits[l/6] = convtab[bits[l/6] & 0x3f]; } + return 0; } @@ -91,19 +92,51 @@ unsigned int ais_binary_encode(struct ais_t *ais, ais_addbits(bits, 128, 9, ais->type1.heading); ais_addbits(bits, 137, 6, ais->type1.second); ais_addbits(bits, 143, 2, ais->type1.maneuver); - /* ais->type1.spare = UBITS(145, 3); */ +/* ais_addbits(bits, 145, 3, ais->type1.spare); */ ais_addbits(bits, 148, 1, ais->type1.raim); ais_addbits(bits, 149, 19, ais->type1.radio); len = 149 + 19; break; case 4: /* Base Station Report */ case 11: /* UTC/Date Response */ + ais_addbits(bits, 38, 14, ais->type4.year); + ais_addbits(bits, 52, 4, ais->type4.month); + ais_addbits(bits, 56, 5, ais->type4.day); + ais_addbits(bits, 61, 5, ais->type4.hour); + ais_addbits(bits, 66, 6, ais->type4.minute); + ais_addbits(bits, 72, 6, ais->type4.second); + ais_addbits(bits, 78, 1, ais->type4.accuracy); + ais_addbits(bits, 79, 28, ais->type4.lon); + ais_addbits(bits, 107, 27, ais->type4.lat); + ais_addbits(bits, 134, 4, ais->type4.epfd); +/* ais_addbits(bits, 138, 10, ais->type4.spare); */ + ais_addbits(bits, 148, 1, ais->type4.raim); + ais_addbits(bits, 149, 19, ais->type4.radio); + len = 149 + 19; break; case 5: /* Ship static and voyage related data */ break; case 9: /* Standard SAR Aircraft Position Report */ break; case 18: /* Standard Class B CS Position Report */ + ais_addbits(bits, 38, 8, ais->type18.reserved); + ais_addbits(bits, 46, 10, ais->type18.speed); + ais_addbits(bits, 56, 1, ais->type18.accuracy); + ais_addbits(bits, 57, 28, ais->type18.lon); + ais_addbits(bits, 85, 27, ais->type18.lat); + ais_addbits(bits, 112, 12, ais->type18.course); + ais_addbits(bits, 124, 9, ais->type18.heading); + ais_addbits(bits, 133, 6, ais->type18.second); + ais_addbits(bits, 139, 2, ais->type18.regional); + ais_addbits(bits, 141, 1, ais->type18.cs); + ais_addbits(bits, 142, 1, ais->type18.display); + ais_addbits(bits, 143, 1, ais->type18.dsc); + ais_addbits(bits, 144, 1, ais->type18.band); + ais_addbits(bits, 145, 1, ais->type18.msg22); + ais_addbits(bits, 146, 1, ais->type18.assigned); + ais_addbits(bits, 147, 1, ais->type18.raim); + ais_addbits(bits, 148, 20, ais->type18.radio); + len = 148 + 20; break; case 19: /* Extended Class B CS Position Report */ break; |