Álvaro de Rada / X_NUCLEO_PLC01A1
Committer:
apalmieri
Date:
Wed Feb 24 10:52:31 2016 +0000
Revision:
4:e97bbb97aa43
Parent:
0:b66a560b6618
Class renaming to keep coherence w/ other expansion board drivers

Who changed what in which revision?

UserRevisionLine numberNew contents of line
apalmieri 0:b66a560b6618 1 /**
apalmieri 0:b66a560b6618 2 ******************************************************************************
apalmieri 0:b66a560b6618 3 * @file VNI8200XP_class.cpp
apalmieri 0:b66a560b6618 4 * @author System Lab Noida
apalmieri 0:b66a560b6618 5 * @version V1.0.0
apalmieri 0:b66a560b6618 6 * @date 08-July-2015
apalmieri 0:b66a560b6618 7 * @brief PLC_CLT01-38SQ7
apalmieri 0:b66a560b6618 8 * This file provides firmware functions for how to manage I/O from VNI8200XP
apalmieri 0:b66a560b6618 9 ==============================================================================
apalmieri 0:b66a560b6618 10
apalmieri 0:b66a560b6618 11
apalmieri 0:b66a560b6618 12 ******************************************************************************
apalmieri 0:b66a560b6618 13 * @attention
apalmieri 0:b66a560b6618 14 *
apalmieri 0:b66a560b6618 15 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
apalmieri 0:b66a560b6618 16 *
apalmieri 0:b66a560b6618 17 * Redistribution and use in source and binary forms, with or without modification,
apalmieri 0:b66a560b6618 18 * are permitted provided that the following conditions are met:
apalmieri 0:b66a560b6618 19 * 1. Redistributions of source code must retain the above copyright notice,
apalmieri 0:b66a560b6618 20 * this list of conditions and the following disclaimer.
apalmieri 0:b66a560b6618 21 * 2. Redistributions in binary form must reproduce the above copyright notice,
apalmieri 0:b66a560b6618 22 * this list of conditions and the following disclaimer in the documentation
apalmieri 0:b66a560b6618 23 * and/or other materials provided with the distribution.
apalmieri 0:b66a560b6618 24 * 3. Neither the name of STMicroelectronics nor the names of its contributors
apalmieri 0:b66a560b6618 25 * may be used to endorse or promote products derived from this software
apalmieri 0:b66a560b6618 26 * without specific prior written permission.
apalmieri 0:b66a560b6618 27 *
apalmieri 0:b66a560b6618 28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
apalmieri 0:b66a560b6618 29 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
apalmieri 0:b66a560b6618 30 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
apalmieri 0:b66a560b6618 31 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
apalmieri 0:b66a560b6618 32 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
apalmieri 0:b66a560b6618 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
apalmieri 0:b66a560b6618 34 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
apalmieri 0:b66a560b6618 35 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
apalmieri 0:b66a560b6618 36 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
apalmieri 0:b66a560b6618 37 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
apalmieri 0:b66a560b6618 38 *
apalmieri 0:b66a560b6618 39 ******************************************************************************
apalmieri 0:b66a560b6618 40 */
apalmieri 0:b66a560b6618 41
apalmieri 0:b66a560b6618 42 /* Includes ------------------------------------------------------------------*/
apalmieri 0:b66a560b6618 43 #include "plc.h"
apalmieri 0:b66a560b6618 44
apalmieri 0:b66a560b6618 45 #include "VNI8200XP_class.h"
apalmieri 0:b66a560b6618 46
apalmieri 0:b66a560b6618 47 /** @addtogroup Drivers Drivers
apalmieri 0:b66a560b6618 48 * @{
apalmieri 0:b66a560b6618 49 * @brief Demo Driver Layer
apalmieri 0:b66a560b6618 50 */
apalmieri 0:b66a560b6618 51
apalmieri 0:b66a560b6618 52 /** @addtogroup BSP BSP
apalmieri 0:b66a560b6618 53 * @{
apalmieri 0:b66a560b6618 54 */
apalmieri 0:b66a560b6618 55
apalmieri 0:b66a560b6618 56 /** @addtogroup Components Components
apalmieri 0:b66a560b6618 57 * @{
apalmieri 0:b66a560b6618 58 */
apalmieri 0:b66a560b6618 59
apalmieri 0:b66a560b6618 60 /** @defgroup VNI8200XP VNI8200XP
apalmieri 0:b66a560b6618 61 * @{
apalmieri 0:b66a560b6618 62 * @brief Digital Output Driver Layer
apalmieri 0:b66a560b6618 63 */
apalmieri 0:b66a560b6618 64
apalmieri 0:b66a560b6618 65 /** @defgroup VNI8200XP_Private_variables VNI8200XP Private variables
apalmieri 0:b66a560b6618 66 * @{
apalmieri 0:b66a560b6618 67 * @brief Digital Output Private variables
apalmieri 0:b66a560b6618 68 */
apalmieri 0:b66a560b6618 69
apalmieri 0:b66a560b6618 70 /* Number of components */
apalmieri 0:b66a560b6618 71 uint8_t VNI8200XP::number_of_plc_output_components = 0;
apalmieri 0:b66a560b6618 72
apalmieri 0:b66a560b6618 73
apalmieri 0:b66a560b6618 74 /** @defgroup VNI8200XP_Exported_Functions VNI8200XP Exported Functions
apalmieri 0:b66a560b6618 75 * @{
apalmieri 0:b66a560b6618 76 * @brief Digital Input exported Function
apalmieri 0:b66a560b6618 77 */
apalmieri 0:b66a560b6618 78
apalmieri 0:b66a560b6618 79 /**********************************************************
apalmieri 0:b66a560b6618 80 * @brief Starts the VNI8200XP library
apalmieri 0:b66a560b6618 81 * @param init Initialization structure.
apalmieri 0:b66a560b6618 82 * @retval COMPONENT_OK in case of success.
apalmieri 0:b66a560b6618 83 **********************************************************/
apalmieri 0:b66a560b6618 84 DrvStatusTypeDef VNI8200XP::VNI8200XP_Init(void *init)
apalmieri 0:b66a560b6618 85 {
apalmieri 0:b66a560b6618 86 VNI_PARITY_Buffer = 0x00;
apalmieri 0:b66a560b6618 87 VNI_FAULT_Buffer = 0x00;
apalmieri 0:b66a560b6618 88 VNI_FB_OK = 0x00;
apalmieri 0:b66a560b6618 89 VNI_TEMP_WARNING = 0x00;
apalmieri 0:b66a560b6618 90 VNI_PARITY_CHECK = 0x00;
apalmieri 0:b66a560b6618 91 VNI_POWER_GOOD = 0x00;
apalmieri 0:b66a560b6618 92 VNI_PARITY_FALL_Buffer = 0x00;
apalmieri 0:b66a560b6618 93
apalmieri 0:b66a560b6618 94 /* Unselect the Ssrelay chip at startup to avoid FAULT */
apalmieri 0:b66a560b6618 95 ssel = 1;
apalmieri 0:b66a560b6618 96
apalmieri 0:b66a560b6618 97 /* Enable Ssrelay Outputs */
apalmieri 0:b66a560b6618 98 out_en = 1;
apalmieri 0:b66a560b6618 99
apalmieri 0:b66a560b6618 100 return COMPONENT_OK;
apalmieri 0:b66a560b6618 101 }
apalmieri 0:b66a560b6618 102
apalmieri 0:b66a560b6618 103 /**********************************************************
apalmieri 0:b66a560b6618 104 * @brief Read id
apalmieri 0:b66a560b6618 105 * @param id pointer to the identifier to be read.
apalmieri 0:b66a560b6618 106 * @retval COMPONENT_OK in case of success.
apalmieri 0:b66a560b6618 107 **********************************************************/
apalmieri 0:b66a560b6618 108 DrvStatusTypeDef VNI8200XP::VNI8200XP_ReadID(uint8_t *id)
apalmieri 0:b66a560b6618 109 {
apalmieri 0:b66a560b6618 110 *id = plc_output_component_instance;
apalmieri 0:b66a560b6618 111
apalmieri 0:b66a560b6618 112 return COMPONENT_OK;
apalmieri 0:b66a560b6618 113 }
apalmieri 0:b66a560b6618 114
apalmieri 0:b66a560b6618 115 /**********************************************************
apalmieri 0:b66a560b6618 116 * @brief Set output channels state
apalmieri 0:b66a560b6618 117 * @param Out_array, output channel data
apalmieri 0:b66a560b6618 118 * @retval None
apalmieri 0:b66a560b6618 119 **********************************************************/
apalmieri 0:b66a560b6618 120 void VNI8200XP::VNI8200XP_SetChannels(uint8_t Out_array)
apalmieri 0:b66a560b6618 121 {
apalmieri 0:b66a560b6618 122 spi_tx_buff[1] = Out_array;
apalmieri 0:b66a560b6618 123 }
apalmieri 0:b66a560b6618 124
apalmieri 0:b66a560b6618 125 /**********************************************************
apalmieri 0:b66a560b6618 126 * @brief Get output fault status
apalmieri 0:b66a560b6618 127 * @param None
apalmieri 0:b66a560b6618 128 * @retval Output channel fault data
apalmieri 0:b66a560b6618 129 **********************************************************/
apalmieri 0:b66a560b6618 130 uint8_t VNI8200XP::VNI8200XP_ManageFault(void)
apalmieri 0:b66a560b6618 131 {
apalmieri 0:b66a560b6618 132 VNI_FAULT_Buffer = spi_rx_buff[1];
apalmieri 0:b66a560b6618 133 return VNI_FAULT_Buffer;
apalmieri 0:b66a560b6618 134 }
apalmieri 0:b66a560b6618 135
apalmieri 0:b66a560b6618 136 /**********************************************************
apalmieri 0:b66a560b6618 137 * @brief Get VNI8200XP DC-DC status
apalmieri 0:b66a560b6618 138 * @param None
apalmieri 0:b66a560b6618 139 * @retval Feedback status, COMPONENT_OK if OK
apalmieri 0:b66a560b6618 140 **********************************************************/
apalmieri 0:b66a560b6618 141 DrvStatusTypeDef VNI8200XP::VNI8200XP_CheckDCDCStatus(void)
apalmieri 0:b66a560b6618 142 {
apalmieri 0:b66a560b6618 143 VNI_FB_OK = spi_rx_buff[0];
apalmieri 0:b66a560b6618 144 VNI_FB_OK = VNI_FB_OK & 0x80;
apalmieri 0:b66a560b6618 145 if(VNI_FB_OK == 0x80)
apalmieri 0:b66a560b6618 146 return COMPONENT_ERROR;
apalmieri 0:b66a560b6618 147 else
apalmieri 0:b66a560b6618 148 return COMPONENT_OK;
apalmieri 0:b66a560b6618 149 }
apalmieri 0:b66a560b6618 150
apalmieri 0:b66a560b6618 151 /**********************************************************
apalmieri 0:b66a560b6618 152 * @brief Get temperature warning status
apalmieri 0:b66a560b6618 153 * @param None
apalmieri 0:b66a560b6618 154 * @retval Temperature warning status, COMPONENT_ERROR if over temperature
apalmieri 0:b66a560b6618 155 **********************************************************/
apalmieri 0:b66a560b6618 156 DrvStatusTypeDef VNI8200XP::VNI8200XP_TemperatureWarning(void)
apalmieri 0:b66a560b6618 157 {
apalmieri 0:b66a560b6618 158 VNI_TEMP_WARNING = spi_rx_buff[0];
apalmieri 0:b66a560b6618 159 VNI_TEMP_WARNING = VNI_TEMP_WARNING & 0x40;
apalmieri 0:b66a560b6618 160 if(VNI_TEMP_WARNING == 0x40)
apalmieri 0:b66a560b6618 161 return COMPONENT_ERROR;
apalmieri 0:b66a560b6618 162 else
apalmieri 0:b66a560b6618 163 return COMPONENT_OK;
apalmieri 0:b66a560b6618 164 }
apalmieri 0:b66a560b6618 165
apalmieri 0:b66a560b6618 166 /**********************************************************
apalmieri 0:b66a560b6618 167 * @brief Get parity check status
apalmieri 0:b66a560b6618 168 * @param None
apalmieri 0:b66a560b6618 169 * @retval Parity check flag, COMPONENT_ERROR if 0x20
apalmieri 0:b66a560b6618 170 **********************************************************/
apalmieri 0:b66a560b6618 171 DrvStatusTypeDef VNI8200XP::VNI8200XP_CheckParity(void)
apalmieri 0:b66a560b6618 172 {
apalmieri 0:b66a560b6618 173 VNI_PARITY_CHECK = spi_rx_buff[0];
apalmieri 0:b66a560b6618 174 VNI_PARITY_CHECK = VNI_PARITY_CHECK & 0x20;
apalmieri 0:b66a560b6618 175 if(VNI_PARITY_CHECK == 0x20)
apalmieri 0:b66a560b6618 176 return COMPONENT_ERROR;
apalmieri 0:b66a560b6618 177 else
apalmieri 0:b66a560b6618 178 return COMPONENT_OK;
apalmieri 0:b66a560b6618 179 }
apalmieri 0:b66a560b6618 180
apalmieri 0:b66a560b6618 181 /**********************************************************
apalmieri 0:b66a560b6618 182 * @brief Get power supply status
apalmieri 0:b66a560b6618 183 * @param None
apalmieri 0:b66a560b6618 184 * @retval Power good bit, COMPONENT_OK in case of power good
apalmieri 0:b66a560b6618 185 **********************************************************/
apalmieri 0:b66a560b6618 186 DrvStatusTypeDef VNI8200XP::VNI8200XP_CheckPowerGood(void)
apalmieri 0:b66a560b6618 187 {
apalmieri 0:b66a560b6618 188 VNI_POWER_GOOD = spi_rx_buff[0];
apalmieri 0:b66a560b6618 189 VNI_POWER_GOOD = VNI_POWER_GOOD & 0x10;
apalmieri 0:b66a560b6618 190 if(VNI_POWER_GOOD == 0x10)
apalmieri 0:b66a560b6618 191 return COMPONENT_OK;
apalmieri 0:b66a560b6618 192 else
apalmieri 0:b66a560b6618 193 return COMPONENT_ERROR;
apalmieri 0:b66a560b6618 194 }
apalmieri 0:b66a560b6618 195
apalmieri 0:b66a560b6618 196 /**********************************************************
apalmieri 0:b66a560b6618 197 * @brief Get parity bits for input data from VNI
apalmieri 0:b66a560b6618 198 * @param None
apalmieri 0:b66a560b6618 199 * @retval Parity bits from VNI
apalmieri 0:b66a560b6618 200 **********************************************************/
apalmieri 0:b66a560b6618 201 uint8_t VNI8200XP::VNI8200XP_CheckCommError(void)
apalmieri 0:b66a560b6618 202 {
apalmieri 0:b66a560b6618 203 VNI_PARITY_FALL_Buffer = spi_rx_buff[0];
apalmieri 0:b66a560b6618 204 VNI_PARITY_FALL_Buffer = VNI_PARITY_FALL_Buffer & 0x0F;
apalmieri 0:b66a560b6618 205 return VNI_PARITY_FALL_Buffer;
apalmieri 0:b66a560b6618 206 }
apalmieri 0:b66a560b6618 207
apalmieri 0:b66a560b6618 208 /**********************************************************
apalmieri 0:b66a560b6618 209 * @brief Set output channels component
apalmieri 0:b66a560b6618 210 * @param txBuff
apalmieri 0:b66a560b6618 211 * @retval None
apalmieri 0:b66a560b6618 212 **********************************************************/
apalmieri 0:b66a560b6618 213 void VNI8200XP::VNI8200XP_Ssrelay_SetOutput(uint8_t *outputArray)
apalmieri 0:b66a560b6618 214 {
apalmieri 0:b66a560b6618 215 spi_tx_buff[0] = outputArray[0];
apalmieri 0:b66a560b6618 216 spi_tx_buff[1] = outputArray[1];
apalmieri 0:b66a560b6618 217
apalmieri 0:b66a560b6618 218 if(VNI8200XP_SpiWriteBytes(spi_tx_buff, spi_rx_buff) != 0)
apalmieri 0:b66a560b6618 219 {
apalmieri 0:b66a560b6618 220 /* Aborting the program */
apalmieri 0:b66a560b6618 221 exit(EXIT_FAILURE);
apalmieri 0:b66a560b6618 222 }
apalmieri 0:b66a560b6618 223 }
apalmieri 0:b66a560b6618 224
apalmieri 0:b66a560b6618 225 /**
apalmieri 0:b66a560b6618 226 * @} //end VNI8200XP Exported Functions
apalmieri 0:b66a560b6618 227 */
apalmieri 0:b66a560b6618 228
apalmieri 0:b66a560b6618 229 /**
apalmieri 0:b66a560b6618 230 * @} //end VNI8200XP Device Driver
apalmieri 0:b66a560b6618 231 */
apalmieri 0:b66a560b6618 232 /**
apalmieri 0:b66a560b6618 233 * @} //end Components
apalmieri 0:b66a560b6618 234 */
apalmieri 0:b66a560b6618 235 /**
apalmieri 0:b66a560b6618 236 * @} //close group BSP
apalmieri 0:b66a560b6618 237 */
apalmieri 0:b66a560b6618 238
apalmieri 0:b66a560b6618 239 /**
apalmieri 0:b66a560b6618 240 * @} //close group Drivers
apalmieri 0:b66a560b6618 241 */
apalmieri 0:b66a560b6618 242
apalmieri 0:b66a560b6618 243 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/