<a id="jls-c-api"></a>

# C API

* [Error Codes](https://docs.joulescope.com/en/software/jls/h_ec.md)
  * [`JLS_ERROR_CODES`](https://docs.joulescope.com/en/software/jls/h_ec.md#c.JLS_ERROR_CODES)
  * [`JLS_ERROR_ENUM`](https://docs.joulescope.com/en/software/jls/h_ec.md#c.JLS_ERROR_ENUM)
  * [`JLS_SUCCESS`](https://docs.joulescope.com/en/software/jls/h_ec.md#c.JLS_SUCCESS)
  * [`jls_error_code_e`](https://docs.joulescope.com/en/software/jls/h_ec.md#_CPPv416jls_error_code_e)
  * [`jls_error_code_name()`](https://docs.joulescope.com/en/software/jls/h_ec.md#_CPPv419jls_error_code_namei)
  * [`jls_error_code_description()`](https://docs.joulescope.com/en/software/jls/h_ec.md#_CPPv426jls_error_code_descriptioni)
* [JLS Format](https://docs.joulescope.com/en/software/jls/h_format.md)
  * [`JLS_FORMAT_VERSION_MAJOR`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_FORMAT_VERSION_MAJOR)
  * [`JLS_FORMAT_VERSION_MINOR`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_FORMAT_VERSION_MINOR)
  * [`JLS_FORMAT_VERSION_PATCH`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_FORMAT_VERSION_PATCH)
  * [`JLS_FORMAT_VERSION_U32`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_FORMAT_VERSION_U32)
  * [`JLS_HEADER_IDENTIFICATION`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_HEADER_IDENTIFICATION)
  * [`JLS_SOURCE_COUNT`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_SOURCE_COUNT)
  * [`JLS_SIGNAL_COUNT`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_SIGNAL_COUNT)
  * [`JLS_SUMMARY_LEVEL_COUNT`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_SUMMARY_LEVEL_COUNT)
  * [`JLS_TRACK_TAG_FLAG`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_TRACK_TAG_FLAG)
  * [`JLS_TRACK_TAG_PACK`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_TRACK_TAG_PACK)
  * [`JLS_TRACK_TAG_PACKER`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_TRACK_TAG_PACKER)
  * [`JLS_DATATYPE_BASETYPE_INT`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_BASETYPE_INT)
  * [`JLS_DATATYPE_BASETYPE_UNSIGNED`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_BASETYPE_UNSIGNED)
  * [`JLS_DATATYPE_BASETYPE_UINT`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_BASETYPE_UINT)
  * [`JLS_DATATYPE_BASETYPE_FLOAT`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_BASETYPE_FLOAT)
  * [`JLS_DATATYPE_DEF`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_DEF)
  * [`JLS_DATATYPE_I4`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_I4)
  * [`JLS_DATATYPE_I8`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_I8)
  * [`JLS_DATATYPE_I16`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_I16)
  * [`JLS_DATATYPE_I24`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_I24)
  * [`JLS_DATATYPE_I32`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_I32)
  * [`JLS_DATATYPE_I64`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_I64)
  * [`JLS_DATATYPE_U1`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U1)
  * [`JLS_DATATYPE_U4`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U4)
  * [`JLS_DATATYPE_U8`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U8)
  * [`JLS_DATATYPE_U16`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U16)
  * [`JLS_DATATYPE_U24`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U24)
  * [`JLS_DATATYPE_U32`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U32)
  * [`JLS_DATATYPE_U64`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_U64)
  * [`JLS_DATATYPE_BOOL`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_BOOL)
  * [`JLS_DATATYPE_F32`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_F32)
  * [`JLS_DATATYPE_F64`](https://docs.joulescope.com/en/software/jls/h_format.md#c.JLS_DATATYPE_F64)
  * [`jls_signal_type_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv417jls_signal_type_e)
  * [`jls_track_type_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv416jls_track_type_e)
  * [`jls_storage_type_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv418jls_storage_type_e)
  * [`jls_annotation_type_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv421jls_annotation_type_e)
  * [`jls_track_chunk_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv417jls_track_chunk_e)
  * [`jls_tag_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv49jls_tag_e)
  * [`jls_summary_fsr_e`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv417jls_summary_fsr_e)
  * [`jls_datatype_parse_basetype()`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv427jls_datatype_parse_basetype8uint32_t)
  * [`jls_datatype_parse_size()`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv423jls_datatype_parse_size8uint32_t)
  * [`jls_datatype_parse_q()`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv420jls_datatype_parse_q8uint32_t)
  * [`jls_source_def_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv416jls_source_def_s)
  * [`jls_signal_def_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv416jls_signal_def_s)
  * [`jls_track_head_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv416jls_track_head_s)
  * [`jls_version_u`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv413jls_version_u)
  * [`jls_file_header_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv417jls_file_header_s)
  * [`jls_chunk_header_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv418jls_chunk_header_s)
  * [`jls_payload_header_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv420jls_payload_header_s)
  * [`jls_fsr_data_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv414jls_fsr_data_s)
  * [`jls_fsr_index_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv415jls_fsr_index_s)
  * [`jls_fsr_f32_summary_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv421jls_fsr_f32_summary_s)
  * [`jls_fsr_f64_summary_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv421jls_fsr_f64_summary_s)
  * [`jls_index_entry_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv417jls_index_entry_s)
  * [`jls_index_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv411jls_index_s)
  * [`jls_annotation_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv416jls_annotation_s)
  * [`jls_annotation_summary_entry_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv430jls_annotation_summary_entry_s)
  * [`jls_annotation_summary_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv424jls_annotation_summary_s)
  * [`jls_utc_data_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv414jls_utc_data_s)
  * [`jls_utc_summary_entry_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv423jls_utc_summary_entry_s)
  * [`jls_utc_summary_s`](https://docs.joulescope.com/en/software/jls/h_format.md#_CPPv417jls_utc_summary_s)
* [JLS Reader](https://docs.joulescope.com/en/software/jls/h_reader.md)
  * [`jls_rd_annotation_cbk_fn`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv424jls_rd_annotation_cbk_fn)
  * [`jls_rd_user_data_cbk_fn`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv423jls_rd_user_data_cbk_fn)
  * [`jls_rd_utc_cbk_fn`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv417jls_rd_utc_cbk_fn)
  * [`jls_rd_open()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv411jls_rd_openPP8jls_rd_sPKc)
  * [`jls_rd_close()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv412jls_rd_closeP8jls_rd_s)
  * [`jls_rd_sources()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv414jls_rd_sourcesP8jls_rd_sPP16jls_source_def_sP8uint16_t)
  * [`jls_rd_signals()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv414jls_rd_signalsP8jls_rd_sPP16jls_signal_def_sP8uint16_t)
  * [`jls_rd_signal()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv413jls_rd_signalP8jls_rd_s8uint16_tP16jls_signal_def_s)
  * [`jls_rd_fsr_length()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv417jls_rd_fsr_lengthP8jls_rd_s8uint16_tP7int64_t)
  * [`jls_rd_fsr()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv410jls_rd_fsrP8jls_rd_s8uint16_t7int64_tPv7int64_t)
  * [`jls_rd_fsr_f32()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv414jls_rd_fsr_f32P8jls_rd_s8uint16_t7int64_tPf7int64_t)
  * [`jls_rd_fsr_statistics()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv421jls_rd_fsr_statisticsP8jls_rd_s8uint16_t7int64_t7int64_tPd7int64_t)
  * [`jls_rd_annotations()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv418jls_rd_annotationsP8jls_rd_s8uint16_t7int64_t24jls_rd_annotation_cbk_fnPv)
  * [`jls_rd_user_data()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv416jls_rd_user_dataP8jls_rd_s23jls_rd_user_data_cbk_fnPv)
  * [`jls_rd_utc()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv410jls_rd_utcP8jls_rd_s8uint16_t7int64_t17jls_rd_utc_cbk_fnPv)
  * [`jls_rd_tmap_length()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv418jls_rd_tmap_lengthP8jls_rd_s8uint16_t)
  * [`jls_rd_sample_id_to_timestamp()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv429jls_rd_sample_id_to_timestampP8jls_rd_s8uint16_t7int64_tP7int64_t)
  * [`jls_rd_timestamp_to_sample_id()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv429jls_rd_timestamp_to_sample_idP8jls_rd_s8uint16_t7int64_tP7int64_t)
  * [`jls_rd_tmap_get()`](https://docs.joulescope.com/en/software/jls/h_reader.md#_CPPv415jls_rd_tmap_getP8jls_rd_s8uint16_t6size_tP23jls_utc_summary_entry_s)
* [JLS Threaded Writer](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md)
  * [`jls_twr_flag_e`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv414jls_twr_flag_e)
  * [`jls_twr_open()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv412jls_twr_openPP9jls_twr_sPKc)
  * [`jls_twr_close()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv413jls_twr_closeP9jls_twr_s)
  * [`jls_twr_flags_get()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv417jls_twr_flags_getP9jls_twr_s)
  * [`jls_twr_flags_set()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv417jls_twr_flags_setP9jls_twr_s8uint32_t)
  * [`jls_twr_flush()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv413jls_twr_flushP9jls_twr_s)
  * [`jls_twr_source_def()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv418jls_twr_source_defP9jls_twr_sPK16jls_source_def_s)
  * [`jls_twr_signal_def()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv418jls_twr_signal_defP9jls_twr_sPK16jls_signal_def_s)
  * [`jls_twr_user_data()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv417jls_twr_user_dataP9jls_twr_s8uint16_t18jls_storage_type_ePK7uint8_t8uint32_t)
  * [`jls_twr_fsr()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv411jls_twr_fsrP9jls_twr_s8uint16_t7int64_tPKv8uint32_t)
  * [`jls_twr_fsr_f32()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv415jls_twr_fsr_f32P9jls_twr_s8uint16_t7int64_tPKf8uint32_t)
  * [`jls_twr_fsr_omit_data()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv421jls_twr_fsr_omit_dataP9jls_twr_s8uint16_t8uint32_t)
  * [`jls_twr_annotation()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv418jls_twr_annotationP9jls_twr_s8uint16_t7int64_tf21jls_annotation_type_e7uint8_t18jls_storage_type_ePK7uint8_t8uint32_t)
  * [`jls_twr_utc()`](https://docs.joulescope.com/en/software/jls/h_threaded_writer.md#_CPPv411jls_twr_utcP9jls_twr_s8uint16_t7int64_t7int64_t)
* [JLS Time](https://docs.joulescope.com/en/software/jls/h_time.md)
  * [`JLS_TIME_Q`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_Q)
  * [`JLS_TIME_MAX`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_MAX)
  * [`JLS_TIME_MIN`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_MIN)
  * [`JLS_TIME_EPOCH_UNIX_OFFSET_SECONDS`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_EPOCH_UNIX_OFFSET_SECONDS)
  * [`JLS_TIME_SECOND`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_SECOND)
  * [`JLS_FRACT_MASK`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_FRACT_MASK)
  * [`JLS_TIME_MILLISECOND`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_MILLISECOND)
  * [`JLS_TIME_MICROSECOND`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_MICROSECOND)
  * [`JLS_TIME_NANOSECOND`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_NANOSECOND)
  * [`JLS_TIME_MINUTE`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_MINUTE)
  * [`JLS_TIME_HOUR`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_HOUR)
  * [`JLS_TIME_DAY`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_DAY)
  * [`JLS_TIME_WEEK`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_WEEK)
  * [`JLS_TIME_MONTH`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_MONTH)
  * [`JLS_TIME_YEAR`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_YEAR)
  * [`JLS_TIME_TO_F64`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_TO_F64)
  * [`JLS_TIME_TO_F32`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_TO_F32)
  * [`JLS_TIME_TO_SECONDS`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_TO_SECONDS)
  * [`JLS_TIME_TO_MILLISECONDS`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_TO_MILLISECONDS)
  * [`JLS_TIME_TO_MICROSECONDS`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_TO_MICROSECONDS)
  * [`JLS_TIME_TO_NANOSECONDS`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_TIME_TO_NANOSECONDS)
  * [`JLS_SECONDS_TO_TIME`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_SECONDS_TO_TIME)
  * [`JLS_MILLISECONDS_TO_TIME`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_MILLISECONDS_TO_TIME)
  * [`JLS_MICROSECONDS_TO_TIME`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_MICROSECONDS_TO_TIME)
  * [`JLS_NANOSECONDS_TO_TIME`](https://docs.joulescope.com/en/software/jls/h_time.md#c.JLS_NANOSECONDS_TO_TIME)
  * [`JLS_F64_TO_TIME()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv415JLS_F64_TO_TIMEd)
  * [`JLS_F32_TO_TIME()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv415JLS_F32_TO_TIMEf)
  * [`JLS_TIME_TO_COUNTER()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv419JLS_TIME_TO_COUNTER7int64_t8uint64_t)
  * [`JLS_TIME_TO_COUNTER_RZERO()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv425JLS_TIME_TO_COUNTER_RZERO7int64_t8uint64_t)
  * [`JLS_TIME_TO_COUNTER_RINF()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv424JLS_TIME_TO_COUNTER_RINF7int64_t8uint64_t)
  * [`JLS_COUNTER_TO_TIME()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv419JLS_COUNTER_TO_TIME8uint64_t8uint64_t)
  * [`JLS_TIME_ABS()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv412JLS_TIME_ABS7int64_t)
  * [`jls_now()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv47jls_nowv)
  * [`jls_time_counter()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv416jls_time_counterv)
  * [`jls_time_rel()`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv412jls_time_relv)
  * [`jls_time_counter_s`](https://docs.joulescope.com/en/software/jls/h_time.md#_CPPv418jls_time_counter_s)
