2 * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 * @brief el_gpio function header file
22 #ifndef MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_GPIO_H_
23 #define MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_GPIO_H_
25 /** @addtogroup BaseSystem
28 /** @addtogroup native_service
32 /** @addtogroup memory_gpio_access_library
33 * @ingroup native_service
43 * \~english Definitions of the GPIO Control Symbol
46 EL_GPO_SUB_RST_N = 0 ,
75 EL_GPO__CWORD65__RST_N,
90 EL_GPI_GVIF_D_REQ_INT,
96 EL_GPIO_GVIFTX0_GPIO0,
98 EL_GPIO_GVIFTX1_GPIO0,
101 EL_GPI__CWORD65__BOOT_ERR,
120 * \~english Rising level trigger
122 #define EL_GPIO_IRQ_TRIGGER_RISING (0x01)
125 * \~english Falling level trigger
127 #define EL_GPIO_IRQ_TRIGGER_FALLING (0x02)
130 * \~english High level trigger
132 #define EL_GPIO_IRQ_TRIGGER_HIGH (0x04)
135 * \~english Low level trigger
137 #define EL_GPIO_IRQ_TRIGGER_LOW (0x08)
140 * \~english Trigger mask
142 #define EL_GPIO_IRQ_TRIGGER_MASK (EL_GPIO_IRQ_TRIGGER_RISING | \
143 EL_GPIO_IRQ_TRIGGER_FALLING | \
144 EL_GPIO_IRQ_TRIGGER_HIGH | \
145 EL_GPIO_IRQ_TRIGGER_LOW)
148 * \~english None timeout
150 #define EL_GPIO_IRQ_NO_TIMEOUT (-1)
152 /**\ingroup EL_Gpio_write
153 * \~english @par Brief
154 * Write data to specified GPIO.
155 * \~english @param [in] symbol
156 * int - symbol(Definitions of the GPIO Control Symbol)
157 * \~english @param [in] value
158 * bool - setting value(0 or 1)
160 * Definitions of the GPIO Control Symbol
163 * EL_GPO_SUB_RST_N = 0 ,
172 * EL_GPO__CWORD52__RST,
173 * EL_GPI__CWORD32__INT,
174 * EL_GPO__CWORD32__RST,
179 * EL_GPO__CWORD52__VUP,
188 * EL_GPO_GVIFTX1_RST_N,
189 * EL_GPO_GVIFTX0_RST_N,
192 * EL_GPO__CWORD65__RST_N,
193 * EL_GPO_GVIFRX_RST_N,
197 * EL_GPI_GVIFTX1_GPIO3,
199 * EL_GPI_GVIFTX0_GPIO3,
201 * EL_GPI_GVIFTX0_GPIO3,
202 * EL_GPI_GVIF_REQ_INT,
203 * EL_GPI_ACC_DET_OUT,
204 * EL_GPI_GVIFRX_GPIO3,
209 * EL_GPI_GVIF_D_REQ_INT,
212 * EL_GPIO_GVIFRX_GPIO0,
213 * EL_GPI_GVIFRX_GPIO2,
215 * EL_GPIO_GVIFTX0_GPIO0,
216 * EL_GPI_GVIFTX0_GPIO2,
217 * EL_GPIO_GVIFTX1_GPIO0,
218 * EL_GPI_GVIFTX1_GPIO2,
220 * EL_GPI__CWORD65__BOOT_ERR,
231 * EL_GPO_SOC_DIAG_OUT,
232 * EL_GPI_SOC_DIAG_IN,
233 * EL_GPIO_SYMBOL_MAX,
236 * \~english @retval 0 Success
237 * \~english @retval -1 Error:Set errno according to error type when error occurs.
238 * \~english @par Prerequisite
240 * \~english @par Change of internal state
241 * - Change of internal state according to the API does not occur.
242 * \~english @par Conditions of processing failure
243 * - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
244 * - syscall error(open(), ioctl()). [-1]
245 * \~english @par Detail
246 * - There is authority to access the specified GPIO, writing data is possiable only\n
247 * when GPIO port is an output port.
248 * \~english @par Classification
250 * \~english @par Type
252 * \~english @see EL_Gpio_read
254 int EL_Gpio_write(int symbol , bool value); // NOLINT[readability/naming]
256 /** \ingroup EL_Gpio_read
257 * \~english @par Brief
258 * Read data from specified GPIO.
259 * \~english @param [in] symbol
260 * int - symbol(Definitions of the GPIO Control Symbol)
261 * \~english @param [out] value
262 * bool * - setting value
264 * Definitions of the GPIO Control Symbol
267 * EL_GPO_SUB_RST_N = 0 ,
276 * EL_GPO__CWORD52__RST,
277 * EL_GPI__CWORD32__INT,
278 * EL_GPO__CWORD32__RST,
283 * EL_GPO__CWORD52__VUP,
292 * EL_GPO_GVIFTX1_RST_N,
293 * EL_GPO_GVIFTX0_RST_N,
296 * EL_GPO__CWORD65__RST_N,
297 * EL_GPO_GVIFRX_RST_N,
301 * EL_GPI_GVIFTX1_GPIO3,
303 * EL_GPI_GVIFTX0_GPIO3,
305 * EL_GPI_GVIFTX0_GPIO3,
306 * EL_GPI_GVIF_REQ_INT,
307 * EL_GPI_ACC_DET_OUT,
308 * EL_GPI_GVIFRX_GPIO3,
313 * EL_GPI_GVIF_D_REQ_INT,
316 * EL_GPIO_GVIFRX_GPIO0,
317 * EL_GPI_GVIFRX_GPIO2,
319 * EL_GPIO_GVIFTX0_GPIO0,
320 * EL_GPI_GVIFTX0_GPIO2,
321 * EL_GPIO_GVIFTX1_GPIO0,
322 * EL_GPI_GVIFTX1_GPIO2,
324 * EL_GPI__CWORD65__BOOT_ERR,
335 * EL_GPO_SOC_DIAG_OUT,
336 * EL_GPI_SOC_DIAG_IN,
337 * EL_GPIO_SYMBOL_MAX,
340 * \~english @retval 0 Success
341 * \~english @retval -1 Error:Set errno according to error type when error occurs.
342 * \~english @par Prerequisite
344 * \~english @par Change of internal state
345 * - Change of internal state according to the API does not occur.
346 * \~english @par Conditions of processing failure
347 * - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
348 * - syscall error(open(), ioctl()). [-1]
349 * \~english @par Detail
350 * - Reading data is possiable when there is authority to access the specified GPIO.
351 * \~english @par Classification
353 * \~english @par Type
355 * \~english @see EL_Gpio_write
357 int EL_Gpio_read(int symbol , bool *value); // NOLINT[readability/naming]
359 /** \ingroup EL_Gpio_attachInterruptControl
360 * \~english @par Brief
361 * Register interruption control of specified GPIO.
362 * \~english @param [in] symbol
363 * int - symbol(Definitions of the GPIO Control Symbol)
364 * \~english @param [in] irq_flags
365 * unsigned long - Interruption control flag of GPIO.
367 * Definitions of the GPIO Control Symbol
370 * EL_GPO_SUB_RST_N = 0 ,
379 * EL_GPO__CWORD52__RST,
380 * EL_GPI__CWORD32__INT,
381 * EL_GPO__CWORD32__RST,
386 * EL_GPO__CWORD52__VUP,
395 * EL_GPO_GVIFTX1_RST_N,
396 * EL_GPO_GVIFTX0_RST_N,
399 * EL_GPO__CWORD65__RST_N,
400 * EL_GPO_GVIFRX_RST_N,
404 * EL_GPI_GVIFTX1_GPIO3,
406 * EL_GPI_GVIFTX0_GPIO3,
408 * EL_GPI_GVIFTX0_GPIO3,
409 * EL_GPI_GVIF_REQ_INT,
410 * EL_GPI_ACC_DET_OUT,
411 * EL_GPI_GVIFRX_GPIO3,
416 * EL_GPI_GVIF_D_REQ_INT,
419 * EL_GPIO_GVIFRX_GPIO0,
420 * EL_GPI_GVIFRX_GPIO2,
422 * EL_GPIO_GVIFTX0_GPIO0,
423 * EL_GPI_GVIFTX0_GPIO2,
424 * EL_GPIO_GVIFTX1_GPIO0,
425 * EL_GPI_GVIFTX1_GPIO2,
427 * EL_GPI__CWORD65__BOOT_ERR,
438 * EL_GPO_SOC_DIAG_OUT,
439 * EL_GPI_SOC_DIAG_IN,
440 * EL_GPIO_SYMBOL_MAX,
444 * Interruption control flag of GPIO
445 * - EL_GPIO_IRQ_TRIGGER_RISING :Rising level trigger
446 * - EL_GPIO_IRQ_TRIGGER_FALLING :Falling level trigger
447 * - EL_GPIO_IRQ_TRIGGER_HIGH :High level trigger
448 * - EL_GPIO_IRQ_TRIGGER_LOW :Low level trigger
449 * \~english @retval 0 Success
450 * \~english @retval -1 Error
451 * \~english @par Prerequisite
453 * \~english @par Change of internal state
454 * - Change of internal state according to the API does not occur.
455 * \~english @par Conditions of processing failure
456 * - Flag specified by irq_flags is not defined flag. [-1]
457 * - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
458 * - syscall error(open(), ioctl()). [-1]
459 * \~english @par Detail
460 * - Register interruption control of specified GPIO.
461 * \~english @par Classification
463 * \~english @par Type
465 * \~english @see EL_Gpio_detachInterruptControl
467 int EL_Gpio_attachInterruptControl(int symbol , unsigned long irq_flags); // NOLINT [readability/nolint]
469 /** \ingroup EL_Gpio_detachInterruptControl
470 * \~english @par Brief
471 * Detach interruption control of specified GPIO.
472 * \~english @param [in] symbol
473 * int - symbol(Definitions of the GPIO Control Symbol)
475 * Definitions of the GPIO Control Symbol
478 * EL_GPO_SUB_RST_N = 0 ,
487 * EL_GPO__CWORD52__RST,
488 * EL_GPI__CWORD32__INT,
489 * EL_GPO__CWORD32__RST,
494 * EL_GPO__CWORD52__VUP,
503 * EL_GPO_GVIFTX1_RST_N,
504 * EL_GPO_GVIFTX0_RST_N,
507 * EL_GPO__CWORD65__RST_N,
508 * EL_GPO_GVIFRX_RST_N,
512 * EL_GPI_GVIFTX1_GPIO3,
514 * EL_GPI_GVIFTX0_GPIO3,
516 * EL_GPI_GVIFTX0_GPIO3,
517 * EL_GPI_GVIF_REQ_INT,
518 * EL_GPI_ACC_DET_OUT,
519 * EL_GPI_GVIFRX_GPIO3,
524 * EL_GPI_GVIF_D_REQ_INT,
527 * EL_GPIO_GVIFRX_GPIO0,
528 * EL_GPI_GVIFRX_GPIO2,
530 * EL_GPIO_GVIFTX0_GPIO0,
531 * EL_GPI_GVIFTX0_GPIO2,
532 * EL_GPIO_GVIFTX1_GPIO0,
533 * EL_GPI_GVIFTX1_GPIO2,
535 * EL_GPI__CWORD65__BOOT_ERR,
546 * EL_GPO_SOC_DIAG_OUT,
547 * EL_GPI_SOC_DIAG_IN,
548 * EL_GPIO_SYMBOL_MAX,
551 * \~english @retval 0 Success
552 * \~english @retval -1 Error
553 * \~english @par Prerequisite
555 * \~english @par Change of internal state
556 * - Change of internal state according to the API does not occur.
557 * \~english @par Conditions of processing failure
558 * - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
559 * - syscall error(open(), ioctl()). [-1]
560 * \~english @par Detail
561 * - Detach interruption control of specified GPIO.
562 * \~english @par Classification
564 * \~english @par Type
566 * \~english @see EL_Gpio_attachInterruptControl
568 int EL_Gpio_detachInterruptControl(int symbol); // NOLINT[readability/naming]
570 /** \ingroup EL_Gpio_waitInterrupt
571 * \~english @par Brief
572 * Waiting interruption of specified GPIO occured without timeout.
573 * \~english @param [in] symbol
574 * int - symbol(Definitions of the GPIO Control Symbol)
576 * Definitions of the GPIO Control Symbol
579 * EL_GPO_SUB_RST_N = 0 ,
588 * EL_GPO__CWORD52__RST,
589 * EL_GPI__CWORD32__INT,
590 * EL_GPO__CWORD32__RST,
595 * EL_GPO__CWORD52__VUP,
604 * EL_GPO_GVIFTX1_RST_N,
605 * EL_GPO_GVIFTX0_RST_N,
608 * EL_GPO__CWORD65__RST_N,
609 * EL_GPO_GVIFRX_RST_N,
613 * EL_GPI_GVIFTX1_GPIO3,
615 * EL_GPI_GVIFTX0_GPIO3,
617 * EL_GPI_GVIFTX0_GPIO3,
618 * EL_GPI_GVIF_REQ_INT,
619 * EL_GPI_ACC_DET_OUT,
620 * EL_GPI_GVIFRX_GPIO3,
625 * EL_GPI_GVIF_D_REQ_INT,
628 * EL_GPIO_GVIFRX_GPIO0,
629 * EL_GPI_GVIFRX_GPIO2,
631 * EL_GPIO_GVIFTX0_GPIO0,
632 * EL_GPI_GVIFTX0_GPIO2,
633 * EL_GPIO_GVIFTX1_GPIO0,
634 * EL_GPI_GVIFTX1_GPIO2,
636 * EL_GPI__CWORD65__BOOT_ERR,
647 * EL_GPO_SOC_DIAG_OUT,
648 * EL_GPI_SOC_DIAG_IN,
649 * EL_GPIO_SYMBOL_MAX,
652 * \~english @retval 0 Success
653 * \~english @retval -1 Error
654 * \~english @par Prerequisite
655 * - Interruption of specified GPIO was registered by \ref EL_Gpio_attachInterruptControl.
656 * \~english @par Change of internal state
657 * - Change of internal state according to the API does not occur.
658 * \~english @par Conditions of processing failure
659 * - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
660 * - syscall error(open(), ioctl()). [-1]
661 * \~english @par Detail
662 * - Waiting interruption of specified GPIO occured without timeout.
663 * \~english @par Classification
665 * \~english @par Type
667 * \~english @see EL_Gpio_waitInterrupt_timeout
669 int EL_Gpio_waitInterrupt(int symbol); // NOLINT[readability/naming]
671 /** \ingroup EL_Gpio_waitInterrupt_timeout
672 * \~english @par Brief
673 * Waiting interruption of specified GPIO with timeout.
674 * \~english @param [in] symbol
675 * int - Symbol(Definitions of the GPIO Control Symbol)
676 * \~english @param [in] timeout
677 * int - Timeout of time(unit: jiffies)
679 * Definitions of the GPIO Control Symbol
682 * EL_GPO_SUB_RST_N = 0 ,
691 * EL_GPO__CWORD52__RST,
692 * EL_GPI__CWORD32__INT,
693 * EL_GPO__CWORD32__RST,
698 * EL_GPO__CWORD52__VUP,
707 * EL_GPO_GVIFTX1_RST_N,
708 * EL_GPO_GVIFTX0_RST_N,
711 * EL_GPO__CWORD65__RST_N,
712 * EL_GPO_GVIFRX_RST_N,
716 * EL_GPI_GVIFTX1_GPIO3,
718 * EL_GPI_GVIFTX0_GPIO3,
720 * EL_GPI_GVIFTX0_GPIO3,
721 * EL_GPI_GVIF_REQ_INT,
722 * EL_GPI_ACC_DET_OUT,
723 * EL_GPI_GVIFRX_GPIO3,
728 * EL_GPI_GVIF_D_REQ_INT,
731 * EL_GPIO_GVIFRX_GPIO0,
732 * EL_GPI_GVIFRX_GPIO2,
734 * EL_GPIO_GVIFTX0_GPIO0,
735 * EL_GPI_GVIFTX0_GPIO2,
736 * EL_GPIO_GVIFTX1_GPIO0,
737 * EL_GPI_GVIFTX1_GPIO2,
739 * EL_GPI__CWORD65__BOOT_ERR,
750 * EL_GPO_SOC_DIAG_OUT,
751 * EL_GPI_SOC_DIAG_IN,
752 * EL_GPIO_SYMBOL_MAX,
755 * \~english @retval 0 Success
756 * \~english @retval -1 Error
757 * \~english @par Prerequisite
758 * - Interruption of specified GPIO was registered by \ref EL_Gpio_attachInterruptControl .
759 * \~english @par Change of internal state
760 * - Change of internal state according to the API does not occur.
761 * \~english @par Conditions of processing failure
762 * - The value of symbol is less than 0 or greater than EL_GPIO_SYMBOL_MAX-1. [-1]
763 * - syscall error(open(), ioctl()). [-1]
764 * \~english @par Detail
765 * - Waiting interruption of specified GPIO with timeout.
766 * - If the value of timeout is not greater than 0, timeout will not happened.
767 * \~english @par Classification
769 * \~english @par Type
771 * \~english @see none
773 int EL_Gpio_waitInterrupt_timeout(int symbol, int timeout); // NOLINT[readability/naming]
775 /** \ingroup EL_Gpio_finalize
776 * \~english @par Brief
778 * \~english @retval 0 Return 0
779 * \~english @par Prerequisite
781 * \~english @par Change of internal state
782 * - Change of internal state according to the API does not occur.
783 * \~english @par Conditions of processing failure
785 * \~english @par Detail
786 * - Change IO-Expander device to reset status.
787 * \~english @par Classification
789 * \~english @par Type
791 * \~english @see EL_Gpio_write, EL_Gpio_read
793 int EL_Gpio_finalize(void); // NOLINT[readability/naming]
797 #endif // __cplusplus
799 /** @}*/ // end of memory_gpio_access_library
800 /** @}*/ // end of native_service
801 /** @}*/ // end of BaseSystem
802 #endif // MEMORY_GPIO_ACCESS_LIBRARY_CLIENT_INCLUDE_NATIVE_SERVICE_EL_GPIO_H_