141 lines
4.0 KiB
C
141 lines
4.0 KiB
C
|
/*********************************************************************
|
||
|
* _ _ _
|
||
|
* _ __ | |_ _ | | __ _ | |__ ___
|
||
|
* | '__|| __|(_)| | / _` || '_ \ / __|
|
||
|
* | | | |_ _ | || (_| || |_) |\__ \
|
||
|
* |_| \__|(_)|_| \__,_||_.__/ |___/
|
||
|
*
|
||
|
* www.rt-labs.com
|
||
|
* Copyright 2018 rt-labs AB, Sweden.
|
||
|
*
|
||
|
* This software is dual-licensed under GPLv3 and a commercial
|
||
|
* license. See the file LICENSE.md distributed with this software for
|
||
|
* full license information.
|
||
|
********************************************************************/
|
||
|
|
||
|
#ifndef APP_DATA_H
|
||
|
#define APP_DATA_H
|
||
|
|
||
|
/**
|
||
|
* @file
|
||
|
* @brief Sample application data interface
|
||
|
*
|
||
|
* Functions for:
|
||
|
* - Getting input data (Button 1 and counter value)
|
||
|
* - Setting output data (LED 1)
|
||
|
* - Setting default output state. This should be
|
||
|
* part of all device implementations for setting
|
||
|
* defined state when device is not connected to PLC
|
||
|
* - Reading and writing parameters
|
||
|
*/
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <stdbool.h>
|
||
|
|
||
|
/**
|
||
|
* Get application specific PNIO input data (for sending to PLC)
|
||
|
*
|
||
|
* The main sample application keeps track
|
||
|
* of button so it is a parameter to this function.
|
||
|
*
|
||
|
* This function is not called for the DAP submodules (slot_nbr==0).
|
||
|
*
|
||
|
* @param slot_nbr In: Slot number
|
||
|
* @param subslot_nbr In: Subslot number
|
||
|
* @param submodule_id In: Submodule id
|
||
|
* @param button_state In: State of button 1
|
||
|
* @param size Out: Size of pnio data.
|
||
|
* Not modified on error.
|
||
|
* @param iops Out: Provider status. If for example
|
||
|
* a sensor is failing or a short
|
||
|
* circuit is detected on digital
|
||
|
* input this shall be set to BAD.
|
||
|
* Not modified on error.
|
||
|
* @return Reference to PNIO data, NULL on error
|
||
|
*/
|
||
|
uint8_t * app_data_get_input_data (
|
||
|
uint16_t slot_nbr,
|
||
|
uint16_t subslot_nbr,
|
||
|
uint32_t submodule_id,
|
||
|
bool button_state,
|
||
|
uint16_t * size,
|
||
|
uint8_t * iops);
|
||
|
|
||
|
/**
|
||
|
* Set application specific PNIO output data (received from PLC)
|
||
|
*
|
||
|
* This function is not called for the DAP submodules (slot_nbr==0).
|
||
|
*
|
||
|
* @param slot_nbr In: Slot number
|
||
|
* @param subslot_nbr In: Subslot number
|
||
|
* @param submodule_id In: Submodule id
|
||
|
* @param data In: Reference to output data
|
||
|
* @param size In: Length of output data
|
||
|
* @return 0 on success, -1 on error
|
||
|
*/
|
||
|
int app_data_set_output_data (
|
||
|
uint16_t slot_nbr,
|
||
|
uint16_t subslot_nbr,
|
||
|
uint32_t submodule_id,
|
||
|
uint8_t * data,
|
||
|
uint16_t size);
|
||
|
|
||
|
/**
|
||
|
* Set default outputs for all subslots.
|
||
|
*
|
||
|
* For the sample application this means that
|
||
|
* LED 1 is turned off.
|
||
|
*
|
||
|
* @return 0 on success, -1 on error
|
||
|
*/
|
||
|
int app_data_set_default_outputs (void);
|
||
|
|
||
|
/**
|
||
|
* Write parameter index for a subslot
|
||
|
*
|
||
|
* @param slot_nbr In: Slot number
|
||
|
* @param subslot_nbr In: Subslot number
|
||
|
* @param submodule_id In: Submodule id
|
||
|
* @param index In: Parameter index
|
||
|
* @param data In: New parameter value
|
||
|
* @param write_length In: Length of parameter data
|
||
|
* @return 0 on success, -1 on error
|
||
|
*/
|
||
|
int app_data_write_parameter (
|
||
|
uint16_t slot_nbr,
|
||
|
uint16_t subslot_nbr,
|
||
|
uint32_t submodule_id,
|
||
|
uint32_t index,
|
||
|
const uint8_t * data,
|
||
|
uint16_t write_length);
|
||
|
|
||
|
/**
|
||
|
* Read parameter index from a subslot
|
||
|
*
|
||
|
* @param slot_nbr In: Slot number
|
||
|
* @param subslot_nbr In: Subslot number
|
||
|
* @param submodule_id In: Submodule id
|
||
|
* @param index In: Parameter index
|
||
|
* @param data In: Reference to parameter data
|
||
|
* @param length InOut: The maximum (in) and actual (out) length in
|
||
|
* bytes of the data.
|
||
|
* @return 0 on success, -1 on error
|
||
|
*/
|
||
|
int app_data_read_parameter (
|
||
|
uint16_t slot_nbr,
|
||
|
uint16_t subslot_nbr,
|
||
|
uint32_t submodule_id,
|
||
|
uint32_t index,
|
||
|
uint8_t ** data,
|
||
|
uint16_t * length);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* APP_DATA_H */
|