Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: platforms/stm/event_handler_test/src/fletch_entry.cc

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE.md file.
4
5 #include <stdlib.h>
6
7 #include <cmsis_os.h>
8 extern "C" {
9 #include <lcd_log.h>
10 }
11 #include <stm32746g_discovery.h>
12 #include <stm32746g_discovery_lcd.h>
13
14 #include "include/fletch_api.h"
15 #include "include/static_ffi.h"
16
17 #include "platforms/stm/disco_fletch/src/fletch_entry.h"
18 #include "platforms/stm/disco_fletch/src/page_allocator.h"
19 #include "platforms/stm/disco_fletch/src/uart.h"
20 #include "src/shared/platform.h"
21 #include "src/shared/utils.h"
22
23 extern unsigned char _binary_event_handler_test_snapshot_start;
24 extern unsigned char _binary_event_handler_test_snapshot_end;
25 extern unsigned char _binary_event_handler_test_snapshot_size;
26
27 extern PageAllocator* page_allocator;
28
29 // `MessageQueueProducer` will send a message every `kMessageFrequency`
30 // millisecond.
31 const int kMessageFrequency = 400;
32
33 // Sends a message on a port_id with a fixed interval.
34 static void MessageQueueProducer(const void *argument) {
35 uint16_t counter = 0;
36 for (;;) {
37 counter++;
38 int port_id = 1;
39 int status = fletch::SendMessageCmsis(port_id, counter);
40 if (status != osOK) {
41 fletch::Print::Error("Error Sending %d\n", status);
42 }
43 osDelay(kMessageFrequency);
44 }
45 }
46
47 // Implementation of write used from syscalls.c to redirect all printf
48 // calls to the print interceptors.
49 extern "C" int Write(int file, char *ptr, int len) {
50 for (int i = 0; i < len; i++) {
51 if (file == 2) {
52 fletch::Print::Error("%c", *ptr++);
53 } else {
54 fletch::Print::Out("%c", *ptr++);
55 }
56 }
57 return len;
58 }
59
60 FLETCH_EXPORT_TABLE_BEGIN
61 FLETCH_EXPORT_TABLE_ENTRY("BSP_LED_On", BSP_LED_On)
62 FLETCH_EXPORT_TABLE_ENTRY("BSP_LED_Off", BSP_LED_Off)
63 FLETCH_EXPORT_TABLE_END
64
65 // Run fletch on the linked in snapshot.
66 void StartFletch(void const * argument) {
67 fletch::Print::Out("Setup fletch\n");
68 FletchSetup();
69 fletch::Print::Out("Read fletch snapshot\n");
70 unsigned char *snapshot = &_binary_event_handler_test_snapshot_start;
71 int snapshot_size =
72 reinterpret_cast<int>(&_binary_event_handler_test_snapshot_size);
73 FletchProgram program = FletchLoadSnapshot(snapshot, snapshot_size);
74 fletch::Print::Out("Run fletch program\n");
75 FletchRunMain(program);
76 fletch::Print::Out("Fletch program exited\n");
77 }
78
79 // LCDLogPutchar is defined by the STM LCD log utility
80 // (Utilities/Log/lcd_log.c) by means of the macro definitions of
81 // LCD_LOG_PUTCHAR in lcd_log_conf.h.
82 extern "C" int LCDLogPutchar(int ch);
83 void LCDPrintIntercepter(const char* message, int out, void* data) {
84 int len = strlen(message);
85 if (out == 3) {
86 LCD_LineColor = LCD_COLOR_RED;
87 } else {
88 LCD_LineColor = LCD_COLOR_BLACK;
89 }
90 for (int i = 0; i < len; i++) {
91 LCDLogPutchar(message[i]);
92 }
93 }
94
95 // Main entry point from FreeRTOS. Running in the default task.
96 void FletchEntry(void const * argument) {
97 // Add an arena of the 8Mb of external memory.
98 uint32_t ext_mem_arena =
99 page_allocator->AddArena("ExtMem", 0xc0000000, 0x800000);
100 BSP_LED_Init(LED1);
101
102 // Initialize the LCD.
103 size_t fb_bytes = (RK043FN48H_WIDTH * RK043FN48H_HEIGHT * 2);
104 size_t fb_pages = page_allocator->PagesForBytes(fb_bytes);
105 void* fb = page_allocator->AllocatePages(fb_pages, ext_mem_arena);
106 BSP_LCD_Init();
107 BSP_LCD_LayerDefaultInit(1, reinterpret_cast<uint32_t>(fb));
108 BSP_LCD_SelectLayer(1);
109 BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
110
111 fletch::Platform::Setup();
112
113 // Initialize LCD Log module.
114 LCD_LOG_Init();
115 LCD_LOG_SetHeader(reinterpret_cast<uint8_t*>(const_cast<char*>("Fletch")));
116 LCD_LOG_SetFooter(reinterpret_cast<uint8_t*>(const_cast<char*>(
117 "STM32746G-Discovery")));
118 FletchRegisterPrintInterceptor(LCDPrintIntercepter, NULL);
119 fletch::Print::DisableStandardOutput();
120
121 osThreadDef(START_FLETCH, StartFletch, osPriorityNormal, 0,
122 3 * 1024 /* stack size */);
123 osThreadCreate(osThread(START_FLETCH), NULL);
124
125 osThreadDef(PRODUCER, MessageQueueProducer, osPriorityNormal, 0, 2 * 1024);
126 osThreadCreate(osThread(PRODUCER), NULL);
127
128 // No more to do right now.
129 for (;;) {
130 osDelay(1);
131 }
132 }
OLDNEW
« no previous file with comments | « platforms/stm/event_handler_test/src/dartino_entry.cc ('k') | platforms/stm/event_handler_test/src/test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698