Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ set (EXAMPLE_BINARIES
adsc_get_position
cpdlc_get_position
)
include_directories(libacars/asn1 asn1)
foreach (ex ${EXAMPLE_BINARIES})
add_executable(${ex} ${ex}.c)
target_include_directories(${ex} PUBLIC ../libacars/asn1)
target_link_libraries(${ex} acars)

endforeach()
if(NOT MSVC)
target_link_libraries (cpdlc_get_position m)
Expand Down
1 change: 1 addition & 0 deletions libacars/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ add_library (acars_core OBJECT
${CMAKE_CURRENT_BINARY_DIR}/version.c
)
set_property(TARGET acars_core PROPERTY POSITION_INDEPENDENT_CODE ON)
list(APPEND acars_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}/asn1)
target_include_directories(acars_core PUBLIC ${acars_include_dirs} ${CMAKE_CURRENT_BINARY_DIR})

set(acars_obj_files $<TARGET_OBJECTS:asn1> $<TARGET_OBJECTS:acars_core>)
Expand Down
194 changes: 194 additions & 0 deletions libacars/FANS.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
#include <libacars/asn1/FANSATCDownlinkMessage.h>
#include <libacars/asn1/FANSATCUplinkMessage.h>
#include <libacars/asn1/FANSBeaconCode.h>
#include <libacars/asn1/FANSTime.h>
#include <libacars/asn1/FANSTimestamp.h>
#include <libacars/asn1/FANSLatitude.h>
#include <libacars/asn1/FANSLongitude.h>
#include <libacars/asn1/FANSATCDownlinkMsgElementIdSequence.h>
#include <libacars/asn1/FANSATCUplinkMsgElementIdSequence.h>
#include <libacars/asn1/FANSAircraftEquipmentCode.h>
#include <libacars/asn1/FANSAircraftFlightIdentification.h>
#include <libacars/asn1/FANSAircraftType.h>
#include <libacars/asn1/FANSAirport.h>
#include <libacars/asn1/FANSAirportDeparture.h>
#include <libacars/asn1/FANSAirportDestination.h>
#include <libacars/asn1/FANSAirwayIdentifier.h>
#include <libacars/asn1/FANSAirwayIntercept.h>
#include <libacars/asn1/FANSAltimeter.h>
#include <libacars/asn1/FANSAltimeterEnglish.h>
#include <libacars/asn1/FANSAltimeterMetric.h>
#include <libacars/asn1/FANSAltitude.h>
#include <libacars/asn1/FANSAltitudeAltitude.h>
#include <libacars/asn1/FANSAltitudeFlightLevel.h>
#include <libacars/asn1/FANSAltitudeFlightLevelMetric.h>
#include <libacars/asn1/FANSAltitudeGNSSFeet.h>
#include <libacars/asn1/FANSAltitudeGNSSMeters.h>
#include <libacars/asn1/FANSAltitudePosition.h>
#include <libacars/asn1/FANSAltitudeQFE.h>
#include <libacars/asn1/FANSAltitudeQFEMeters.h>
#include <libacars/asn1/FANSAltitudeQNH.h>
#include <libacars/asn1/FANSAltitudeQNHMeters.h>
#include <libacars/asn1/FANSAltitudeRestriction.h>
#include <libacars/asn1/FANSAltitudeSpeed.h>
#include <libacars/asn1/FANSAltitudeSpeedSpeed.h>
#include <libacars/asn1/FANSAltitudeTime.h>
#include <libacars/asn1/FANSATWAlongTrackWaypoint.h>
#include <libacars/asn1/FANSATWAlongTrackWaypointSequence.h>
#include <libacars/asn1/FANSATWAltitude.h>
#include <libacars/asn1/FANSATWAltitudeSequence.h>
#include <libacars/asn1/FANSATWAltitudeTolerance.h>
#include <libacars/asn1/FANSATWDistance.h>
#include <libacars/asn1/FANSATWDistanceTolerance.h>
#include <libacars/asn1/FANSCOMNAVApproachEquipmentAvailable.h>
#include <libacars/asn1/FANSCOMNAVEquipmentStatus.h>
#include <libacars/asn1/FANSCOMNAVEquipmentStatusSequence.h>
#include <libacars/asn1/FANSDegreeIncrement.h>
#include <libacars/asn1/FANSDegrees.h>
#include <libacars/asn1/FANSDegreesMagnetic.h>
#include <libacars/asn1/FANSDegreesTrue.h>
#include <libacars/asn1/FANSDirection.h>
#include <libacars/asn1/FANSDirectionDegrees.h>
#include <libacars/asn1/FANSDistance.h>
#include <libacars/asn1/FANSDistanceKm.h>
#include <libacars/asn1/FANSDistanceNm.h>
#include <libacars/asn1/FANSDistanceOffset.h>
#include <libacars/asn1/FANSDistanceOffsetDirection.h>
#include <libacars/asn1/FANSDistanceOffsetKm.h>
#include <libacars/asn1/FANSDistanceOffsetNm.h>
#include <libacars/asn1/FANSEFCtime.h>
#include <libacars/asn1/FANSFixName.h>
#include <libacars/asn1/FANSFixNext.h>
#include <libacars/asn1/FANSFixNextPlusOne.h>
#include <libacars/asn1/FANSFrequency.h>
#include <libacars/asn1/FANSFrequencyDeparture.h>
#include <libacars/asn1/FANSFrequencyhf.h>
#include <libacars/asn1/FANSFrequencysatchannel.h>
#include <libacars/asn1/FANSFrequencyuhf.h>
#include <libacars/asn1/FANSFrequencyvhf.h>
#include <libacars/asn1/FANSHoldatwaypoint.h>
#include <libacars/asn1/FANSHoldatwaypointSequence.h>
#include <libacars/asn1/FANSHoldatwaypointSpeedHigh.h>
#include <libacars/asn1/FANSHoldatwaypointSpeedLow.h>
#include <libacars/asn1/FANSHoldClearance.h>
#include <libacars/asn1/FANSICAOFacilityDesignationTp4Table.h>
#include <libacars/asn1/FANSICAOFacilityFunction.h>
#include <libacars/asn1/FANSICAOFacilityIdentification.h>
#include <libacars/asn1/FANSICAOFacilityName.h>
#include <libacars/asn1/FANSICAOUnitName.h>
#include <libacars/asn1/FANSICAOUnitNameFrequency.h>
#include <libacars/asn1/FANSIcing.h>
#include <libacars/asn1/FANSInterceptCourseFrom.h>
#include <libacars/asn1/FANSInterceptCourseFromSelection.h>
#include <libacars/asn1/FANSInterceptCourseFromSequence.h>
#include <libacars/asn1/FANSLatitudeLongitude.h>
#include <libacars/asn1/FANSLatitudeLongitudeSequence.h>
#include <libacars/asn1/FANSLatitudeReportingPoints.h>
#include <libacars/asn1/FANSLatLonReportingPoints.h>
#include <libacars/asn1/FANSLegDistance.h>
#include <libacars/asn1/FANSLegDistanceEnglish.h>
#include <libacars/asn1/FANSLegDistanceMetric.h>
#include <libacars/asn1/FANSLegTime.h>
#include <libacars/asn1/FANSLegType.h>
#include <libacars/asn1/FANSLongitudeReportingPoints.h>
#include <libacars/asn1/FANSNavaid.h>
#include <libacars/asn1/FANSPDCrevision.h>
#include <libacars/asn1/FANSPlaceBearing.h>
#include <libacars/asn1/FANSPlaceBearingDistance.h>
#include <libacars/asn1/FANSPlaceBearingPlaceBearing.h>
#include <libacars/asn1/FANSPosition.h>
#include <libacars/asn1/FANSPositionAltitude.h>
#include <libacars/asn1/FANSPositionAltitudeAltitude.h>
#include <libacars/asn1/FANSPositionAltitudeSpeed.h>
#include <libacars/asn1/FANSPositionCurrent.h>
#include <libacars/asn1/FANSPositionDegrees.h>
#include <libacars/asn1/FANSPositionDistanceOffsetDirection.h>
#include <libacars/asn1/FANSPositionICAOUnitNameFrequency.h>
#include <libacars/asn1/FANSPositionPosition.h>
#include <libacars/asn1/FANSPositionProcedureName.h>
#include <libacars/asn1/FANSPositionReport.h>
#include <libacars/asn1/FANSPositionRouteClearance.h>
#include <libacars/asn1/FANSPositionSpeed.h>
#include <libacars/asn1/FANSPositionSpeedSpeed.h>
#include <libacars/asn1/FANSPositionTime.h>
#include <libacars/asn1/FANSPositionTimeAltitude.h>
#include <libacars/asn1/FANSPositionTimeTime.h>
#include <libacars/asn1/FANSPredepartureClearance.h>
#include <libacars/asn1/FANSProcedure.h>
#include <libacars/asn1/FANSProcedureApproach.h>
#include <libacars/asn1/FANSProcedureArrival.h>
#include <libacars/asn1/FANSProcedureDeparture.h>
#include <libacars/asn1/FANSProcedureName.h>
#include <libacars/asn1/FANSProcedureTransition.h>
#include <libacars/asn1/FANSProcedureType.h>
#include <libacars/asn1/FANSPublishedIdentifier.h>
#include <libacars/asn1/FANSRemainingFuel.h>
#include <libacars/asn1/FANSRemainingFuelRemainingSouls.h>
#include <libacars/asn1/FANSRemainingSouls.h>
#include <libacars/asn1/FANSReportedWaypointAltitude.h>
#include <libacars/asn1/FANSReportedWaypointPosition.h>
#include <libacars/asn1/FANSReportedWaypointTime.h>
#include <libacars/asn1/FANSReportingPoints.h>
#include <libacars/asn1/FANSRouteClearance.h>
#include <libacars/asn1/FANSRouteInformation.h>
#include <libacars/asn1/FANSRouteInformationAdditional.h>
#include <libacars/asn1/FANSRouteInformationSequence.h>
#include <libacars/asn1/FANSRTARequiredTimeArrival.h>
#include <libacars/asn1/FANSRTARequiredTimeArrivalSequence.h>
#include <libacars/asn1/FANSRTATime.h>
#include <libacars/asn1/FANSRTATolerance.h>
#include <libacars/asn1/FANSRunway.h>
#include <libacars/asn1/FANSRunwayArrival.h>
#include <libacars/asn1/FANSRunwayConfiguration.h>
#include <libacars/asn1/FANSRunwayDeparture.h>
#include <libacars/asn1/FANSRunwayDirection.h>
#include <libacars/asn1/FANSSpeed.h>
#include <libacars/asn1/FANSSpeedGround.h>
#include <libacars/asn1/FANSSpeedGroundMetric.h>
#include <libacars/asn1/FANSSpeedIndicated.h>
#include <libacars/asn1/FANSSpeedIndicatedMetric.h>
#include <libacars/asn1/FANSSpeedMach.h>
#include <libacars/asn1/FANSSpeedMachLarge.h>
#include <libacars/asn1/FANSSpeedSpeed.h>
#include <libacars/asn1/FANSSpeedTrue.h>
#include <libacars/asn1/FANSSpeedTrueMetric.h>
#include <libacars/asn1/FANSSSREquipmentAvailable.h>
#include <libacars/asn1/FANSSupplementaryInformation.h>
#include <libacars/asn1/FANSTemperature.h>
#include <libacars/asn1/FANSTemperatureC.h>
#include <libacars/asn1/FANSTemperatureF.h>
#include <libacars/asn1/FANSTimeAltitude.h>
#include <libacars/asn1/FANSTimeAtPositionCurrent.h>
#include <libacars/asn1/FANSTimeDepartureEdct.h>
#include <libacars/asn1/FANSTimeDistanceOffsetDirection.h>
#include <libacars/asn1/FANSTimeDistanceToFromPosition.h>
#include <libacars/asn1/FANSTimeEtaAtFixNext.h>
#include <libacars/asn1/FANSTimeEtaDestination.h>
#include <libacars/asn1/FANSTimeICAOunitnameFrequency.h>
#include <libacars/asn1/FANSTimePosition.h>
#include <libacars/asn1/FANSTimePositionAltitude.h>
#include <libacars/asn1/FANSTimePositionAltitudeSpeed.h>
#include <libacars/asn1/FANSTimeSpeed.h>
#include <libacars/asn1/FANSTimeSpeedSpeed.h>
#include <libacars/asn1/FANSTimeTime.h>
#include <libacars/asn1/FANSTimeTolerance.h>
#include <libacars/asn1/FANSToFrom.h>
#include <libacars/asn1/FANSToFromPosition.h>
#include <libacars/asn1/FANSTp4table.h>
#include <libacars/asn1/FANSTrackAngle.h>
#include <libacars/asn1/FANSTrackDetail.h>
#include <libacars/asn1/FANSTrackName.h>
#include <libacars/asn1/FANSTrueheading.h>
#include <libacars/asn1/FANSTurbulence.h>
#include <libacars/asn1/FANSVerticalChange.h>
#include <libacars/asn1/FANSVerticalDirection.h>
#include <libacars/asn1/FANSVerticalRate.h>
#include <libacars/asn1/FANSVerticalRateEnglish.h>
#include <libacars/asn1/FANSVerticalRateMetric.h>
#include <libacars/asn1/FANSWaypointSpeedAltitude.h>
#include <libacars/asn1/FANSWaypointSpeedAltitudesequence.h>
#include <libacars/asn1/FANSWindDirection.h>
#include <libacars/asn1/FANSWinds.h>
#include <libacars/asn1/FANSWindSpeed.h>
#include <libacars/asn1/FANSWindSpeedEnglish.h>
#include <libacars/asn1/FANSWindSpeedMetric.h>
16 changes: 8 additions & 8 deletions libacars/asn1-format-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ void la_format_INTEGER_as_ENUM_as_json(la_asn1_formatter_params p, la_dict const

void la_format_CHOICE_as_text(la_asn1_formatter_params p, la_dict const *choice_labels,
la_asn1_formatter_func cb) {
asn_CHOICE_specifics_t *specs = p.td->specifics;
int present = _fetch_present_idx(p.sptr, specs->pres_offset, specs->pres_size);
const asn_CHOICE_specifics_t *specs = p.td->specifics;
unsigned int present = _fetch_present_idx(p.sptr, specs->pres_offset, specs->pres_size);
if(p.label != NULL) {
LA_ISPRINTF(p.vstr, p.indent, "%s:\n", p.label);
p.indent++;
Expand Down Expand Up @@ -103,7 +103,7 @@ void la_format_CHOICE_as_text(la_asn1_formatter_params p, la_dict const *choice_
void la_format_CHOICE_as_json(la_asn1_formatter_params p, la_dict const *choice_labels,
la_asn1_formatter_func cb) {
asn_CHOICE_specifics_t const *specs = p.td->specifics;
int present = _fetch_present_idx(p.sptr, specs->pres_offset, specs->pres_size);
unsigned int present = _fetch_present_idx(p.sptr, specs->pres_offset, specs->pres_size);
la_json_object_start(p.vstr, p.label);
if(choice_labels != NULL) {
char const *descr = la_dict_search(choice_labels, present);
Expand Down Expand Up @@ -138,7 +138,7 @@ void la_format_SEQUENCE_as_text(la_asn1_formatter_params p, la_asn1_formatter_fu
p.indent++;
}
la_asn1_formatter_params cb_p = p;
for(int edx = 0; edx < p.td->elements_count; edx++) {
for(unsigned int edx = 0; edx < p.td->elements_count; edx++) {
asn_TYPE_member_t *elm = &p.td->elements[edx];
void const *memb_ptr;

Expand All @@ -162,7 +162,7 @@ void la_format_SEQUENCE_as_text(la_asn1_formatter_params p, la_asn1_formatter_fu
void la_format_SEQUENCE_as_json(la_asn1_formatter_params p, la_asn1_formatter_func cb) {
la_asn1_formatter_params cb_p = p;
la_json_object_start(p.vstr, p.label);
for(int edx = 0; edx < p.td->elements_count; edx++) {
for(unsigned int edx = 0; edx < p.td->elements_count; edx++) {
asn_TYPE_member_t *elm = &p.td->elements[edx];
void const *memb_ptr;

Expand Down Expand Up @@ -222,7 +222,7 @@ void la_format_SEQUENCE_OF_as_json(la_asn1_formatter_params p, la_asn1_formatter
// Bit 0 is the MSB of the first octet in the buffer.
void la_format_BIT_STRING_as_text(la_asn1_formatter_params p, la_dict const *bit_labels) {
BIT_STRING_t const *bs = p.sptr;
la_debug_print(D_INFO, "buf len: %d bits_unused: %d\n", bs->size, bs->bits_unused);
la_debug_print(D_INFO, "buf len: %ld bits_unused: %d\n", bs->size, bs->bits_unused);
uint32_t val = 0;
int truncated = 0;
int len = bs->size;
Expand Down Expand Up @@ -260,14 +260,14 @@ void la_format_BIT_STRING_as_text(la_asn1_formatter_params p, la_dict const *bit
end:
if(truncated > 0) {
LA_ISPRINTF(p.vstr, p.indent,
"-- Warning: bit string too long (%d bits), truncated to %d bits\n",
"-- Warning: bit string too long (%zu bits), truncated to %d bits\n",
bs->size * 8 - bs->bits_unused, len * 8);
}
}

void la_format_BIT_STRING_as_json(la_asn1_formatter_params p, la_dict const *bit_labels) {
BIT_STRING_t const *bs = p.sptr;
la_debug_print(D_INFO, "buf len: %d bits_unused: %d\n", bs->size, bs->bits_unused);
la_debug_print(D_INFO, "buf len: %ld bits_unused: %d\n", bs->size, bs->bits_unused);
uint32_t val = 0;
int len = bs->size;
int bits_unused = bs->bits_unused;
Expand Down
1 change: 1 addition & 0 deletions libacars/asn1-format-cpdlc-json.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <libacars/asn1-format-cpdlc.h> /* la_asn1_output_cpdlc_as_json(),
FANSATCUplinkMsgElementId_labels,
FANSATCDownlinkMsgElementId_labels */
#include <libacars/FANS.h>
#include <libacars/macros.h> /* LA_ISPRINTF */
#include <libacars/util.h> /* LA_XCALLOC, la_dict_search() */
#include <libacars/vstring.h> /* la_vstring */
Expand Down
Loading