Implement a secure ICS protocol targeting LoRa Node151 microcontroller for controlling irrigation.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

163 regels
3.5 KiB

  1. /**
  2. * \file
  3. *
  4. * \brief Syscalls for SAM0 (GCC).
  5. *
  6. * Copyright (C) 2015-2016 Atmel Corporation. All rights reserved.
  7. *
  8. * \asf_license_start
  9. *
  10. * \page License
  11. *
  12. * Redistribution and use in source and binary forms, with or without
  13. * modification, are permitted provided that the following conditions are met:
  14. *
  15. * 1. Redistributions of source code must retain the above copyright notice,
  16. * this list of conditions and the following disclaimer.
  17. *
  18. * 2. Redistributions in binary form must reproduce the above copyright notice,
  19. * this list of conditions and the following disclaimer in the documentation
  20. * and/or other materials provided with the distribution.
  21. *
  22. * 3. The name of Atmel may not be used to endorse or promote products derived
  23. * from this software without specific prior written permission.
  24. *
  25. * 4. This software may only be redistributed and used in connection with an
  26. * Atmel microcontroller product.
  27. *
  28. * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
  29. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  30. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
  31. * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
  32. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  33. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  34. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  35. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  36. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  37. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  38. * POSSIBILITY OF SUCH DAMAGE.
  39. *
  40. * \asf_license_stop
  41. *
  42. */
  43. #include <stdio.h>
  44. #include <stdarg.h>
  45. #include <sys/types.h>
  46. #include <sys/stat.h>
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50. #undef errno
  51. extern int errno;
  52. extern int _end;
  53. extern caddr_t _sbrk(int incr);
  54. extern int link(char *old, char *_new);
  55. extern int _close(int file);
  56. extern int _fstat(int file, struct stat *st);
  57. extern int _isatty(int file);
  58. extern int _lseek(int file, int ptr, int dir);
  59. extern void _exit(int status);
  60. extern void _kill(int pid, int sig);
  61. extern int _getpid(void);
  62. /**
  63. * \brief Replacement of C library of _sbrk
  64. */
  65. extern caddr_t _sbrk(int incr)
  66. {
  67. static unsigned char *heap = NULL;
  68. unsigned char * prev_heap;
  69. if (heap == NULL) {
  70. heap = (unsigned char *)&_end;
  71. }
  72. prev_heap = heap;
  73. heap += incr;
  74. return (caddr_t)prev_heap;
  75. }
  76. /**
  77. * \brief Replacement of C library of link
  78. */
  79. extern int link(char *old, char *_new)
  80. {
  81. (void)old, (void)_new;
  82. return -1;
  83. }
  84. /**
  85. * \brief Replacement of C library of _close
  86. */
  87. extern int _close(int file)
  88. {
  89. (void)file;
  90. return -1;
  91. }
  92. /**
  93. * \brief Replacement of C library of _fstat
  94. */
  95. extern int _fstat(int file, struct stat *st)
  96. {
  97. (void)file;
  98. st->st_mode = S_IFCHR;
  99. return 0;
  100. }
  101. /**
  102. * \brief Replacement of C library of _isatty
  103. */
  104. extern int _isatty(int file)
  105. {
  106. (void)file;
  107. return 1;
  108. }
  109. /**
  110. * \brief Replacement of C library of _lseek
  111. */
  112. extern int _lseek(int file, int ptr, int dir)
  113. {
  114. (void)file, (void)ptr, (void)dir;
  115. return 0;
  116. }
  117. /**
  118. * \brief Replacement of C library of _exit
  119. */
  120. extern void _exit(int status)
  121. {
  122. printf("Exiting with status %d.\n", status);
  123. for (;;)
  124. ;
  125. }
  126. /**
  127. * \brief Replacement of C library of _kill
  128. */
  129. extern void _kill(int pid, int sig)
  130. {
  131. (void)pid, (void)sig;
  132. return;
  133. }
  134. /**
  135. * \brief Replacement of C library of _getpid
  136. */
  137. extern int _getpid(void)
  138. {
  139. return -1;
  140. }
  141. #ifdef __cplusplus
  142. }
  143. #endif