Skip to content
Snippets Groups Projects
Select Git revision
  • 8f3e3495b763ffe8b58590e5dfd37336a625b71d
  • main default protected
  • leveleditor
  • david-author
  • clang-tidy-cleanup
  • architecture-refactoring
  • cleanUpMenus
  • doxygen-cleanup
  • project-structure-refactoring
  • interpolation
  • buildingFeatures
  • win_end_screen
  • helpMenu
  • leveleditor-placement
  • text-rendering
  • updated_unit_contextmenu
  • level-from-commandline
  • unit_contextmenu
  • player
  • engine-scaling
  • clang-tidy
21 results

TileButton.cpp

Blame
  • protocol.h 1.73 KiB
    #pragma once
    #include <stdint.h>
    #include <sys/ipc.h>
    
    #define MAX_DAEMON_PACKET_DATA_SIZE 4096
    
    #define MSG_QUEUE_KEY "/var/run/sibyl"
    #define MSG_QUEUE_PROJ_ID 69
    
    /**
     * typedef daemon_measurement_datatype_t - Enum of possible datatypes for `daemon_measurement_t`.
     */
    typedef enum {
        CHAR,
        INT64,
        UINT64,
        FLOAT64
    } __attribute__ ((__packed__)) daemon_measurement_datatype_t;
    
    /**
     * typedef daemon_measurement_t - Structure to hold a userspace measurement.
     * @measurement_id: The id of the measurement. Every sender should have a unique id.
     * @daemon_measurement_datatype: Datatype of the data. All values in `data` must be of this type.
     * @length: How many types of `datatype` are in `data`. Must not exceed (`length` * daemon_measurement_datatype_size(`datatype`)) > MAX_DAEMON_PACKET_DATA_SIZE.
     * @data: The measurement data.
     */
    typedef struct {
        uint8_t measurement_id;
        daemon_measurement_datatype_t datatype;
        uint16_t length;
        uint8_t data[MAX_DAEMON_PACKET_DATA_SIZE];
    } daemon_measurement_t;
    
    /**
     * daemon_measurement_datatype_size() - Get the size of a `daemon_measurement_datatype_t`.
     * @arg1: The datatype to get the size of.
     *
     * Returns the size.
     */
    int daemon_measurement_datatype_size(daemon_measurement_datatype_t datatype);
    /**
     * daemon_measurement_check() - Check if a `daemon_measurement_t` is correct.
     * @arg1: Measurement to check.
     *
     * Checks if the datatype size * length not exceeds MAX_DAEMON_PACKET_DATA_SIZE.
     *
     * Returns 0 on success, -1 on error.
     */
    int daemon_measurement_check(daemon_measurement_t* daemon_measurement);
    
    /**
     * msg_queue_key() - Return the message queue key for the userspace communication.
     *
     * Returns the key of the message queue or -1 on error.
     */
    key_t msg_queue_key();