Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sat Jun 03 00:22:44 2017 +0000
Revision:
46:b156ef445742
Parent:
18:6a4db94011d3
Final code for internal battlebot competition.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 #include "cmsis.h"
sahilmgandhi 18:6a4db94011d3 2 #include <sys/types.h>
sahilmgandhi 18:6a4db94011d3 3 #include <errno.h>
sahilmgandhi 18:6a4db94011d3 4
sahilmgandhi 18:6a4db94011d3 5 extern "C" {
sahilmgandhi 18:6a4db94011d3 6
sahilmgandhi 18:6a4db94011d3 7 struct SCS3Regions {
sahilmgandhi 18:6a4db94011d3 8 unsigned long Dummy;
sahilmgandhi 18:6a4db94011d3 9 unsigned long* InitRam;
sahilmgandhi 18:6a4db94011d3 10 unsigned long* StartRam;
sahilmgandhi 18:6a4db94011d3 11 unsigned long InitSizeRam;
sahilmgandhi 18:6a4db94011d3 12 unsigned long ZeroSizeRam;
sahilmgandhi 18:6a4db94011d3 13 };
sahilmgandhi 18:6a4db94011d3 14
sahilmgandhi 18:6a4db94011d3 15 extern unsigned long __cs3_regions;
sahilmgandhi 18:6a4db94011d3 16 extern unsigned long __cs3_heap_start;
sahilmgandhi 18:6a4db94011d3 17
sahilmgandhi 18:6a4db94011d3 18 int main(void);
sahilmgandhi 18:6a4db94011d3 19 void __libc_init_array(void);
sahilmgandhi 18:6a4db94011d3 20 void exit(int ErrorCode);
sahilmgandhi 18:6a4db94011d3 21
sahilmgandhi 18:6a4db94011d3 22 static void *heap_pointer = NULL;
sahilmgandhi 18:6a4db94011d3 23
sahilmgandhi 18:6a4db94011d3 24 void __cs3_start_c(void) {
sahilmgandhi 18:6a4db94011d3 25 static SCS3Regions* pCS3Regions = (SCS3Regions*)&__cs3_regions;
sahilmgandhi 18:6a4db94011d3 26 unsigned long* pulDest;
sahilmgandhi 18:6a4db94011d3 27 unsigned long* pulSrc;
sahilmgandhi 18:6a4db94011d3 28 unsigned long ByteCount;
sahilmgandhi 18:6a4db94011d3 29 unsigned long i;
sahilmgandhi 18:6a4db94011d3 30
sahilmgandhi 18:6a4db94011d3 31 pulSrc = pCS3Regions->InitRam;
sahilmgandhi 18:6a4db94011d3 32 pulDest = pCS3Regions->StartRam;
sahilmgandhi 18:6a4db94011d3 33 ByteCount = pCS3Regions->InitSizeRam;
sahilmgandhi 18:6a4db94011d3 34 if (pulSrc != pulDest) {
sahilmgandhi 18:6a4db94011d3 35 for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) {
sahilmgandhi 18:6a4db94011d3 36 *(pulDest++) = *(pulSrc++);
sahilmgandhi 18:6a4db94011d3 37 }
sahilmgandhi 18:6a4db94011d3 38 } else {
sahilmgandhi 18:6a4db94011d3 39 pulDest = (unsigned long*)(void*)((char*)pulDest + ByteCount);
sahilmgandhi 18:6a4db94011d3 40 }
sahilmgandhi 18:6a4db94011d3 41
sahilmgandhi 18:6a4db94011d3 42 ByteCount = pCS3Regions->ZeroSizeRam;
sahilmgandhi 18:6a4db94011d3 43 for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) {
sahilmgandhi 18:6a4db94011d3 44 *(pulDest++) = 0;
sahilmgandhi 18:6a4db94011d3 45 }
sahilmgandhi 18:6a4db94011d3 46
sahilmgandhi 18:6a4db94011d3 47 heap_pointer = &__cs3_heap_start;
sahilmgandhi 18:6a4db94011d3 48 __libc_init_array();
sahilmgandhi 18:6a4db94011d3 49 exit(main());
sahilmgandhi 18:6a4db94011d3 50 }
sahilmgandhi 18:6a4db94011d3 51
sahilmgandhi 18:6a4db94011d3 52 int _kill(int pid, int sig) {
sahilmgandhi 18:6a4db94011d3 53 errno = EINVAL;
sahilmgandhi 18:6a4db94011d3 54 return -1;
sahilmgandhi 18:6a4db94011d3 55 }
sahilmgandhi 18:6a4db94011d3 56
sahilmgandhi 18:6a4db94011d3 57 void _exit(int status) {
sahilmgandhi 18:6a4db94011d3 58 exit(status);
sahilmgandhi 18:6a4db94011d3 59 }
sahilmgandhi 18:6a4db94011d3 60
sahilmgandhi 18:6a4db94011d3 61 int _getpid(void) {
sahilmgandhi 18:6a4db94011d3 62 return 1;
sahilmgandhi 18:6a4db94011d3 63 }
sahilmgandhi 18:6a4db94011d3 64
sahilmgandhi 18:6a4db94011d3 65 void *_sbrk(unsigned int incr) {
sahilmgandhi 18:6a4db94011d3 66 void *mem;
sahilmgandhi 18:6a4db94011d3 67
sahilmgandhi 18:6a4db94011d3 68 unsigned int next = ((((unsigned int)heap_pointer + incr) + 7) & ~7);
sahilmgandhi 18:6a4db94011d3 69 if (next > __get_MSP()) {
sahilmgandhi 18:6a4db94011d3 70 mem = NULL;
sahilmgandhi 18:6a4db94011d3 71 } else {
sahilmgandhi 18:6a4db94011d3 72 mem = (void *)heap_pointer;
sahilmgandhi 18:6a4db94011d3 73 }
sahilmgandhi 18:6a4db94011d3 74 heap_pointer = (void *)next;
sahilmgandhi 18:6a4db94011d3 75
sahilmgandhi 18:6a4db94011d3 76 return mem;
sahilmgandhi 18:6a4db94011d3 77 }
sahilmgandhi 18:6a4db94011d3 78
sahilmgandhi 18:6a4db94011d3 79 }