Refactor codegen/src/generator.rs into a modular directory structure and fix compilation errors.
Co-authored-by: openhands <openhands@all-hands.dev>
This commit is contained in:
@@ -1,74 +1,14 @@
|
||||
#![no_std]
|
||||
#![cfg_attr(not(test), no_main)]
|
||||
#![no_main]
|
||||
|
||||
mod helloworld;
|
||||
use core::panic::PanicInfo;
|
||||
|
||||
#[cfg(feature = "alloc")]
|
||||
extern crate alloc;
|
||||
|
||||
use roto_runtime::{ProtoAccessor, RotoMessage, RotoOwned};
|
||||
|
||||
#[cfg(all(feature = "alloc", not(test)))]
|
||||
#[global_allocator]
|
||||
static ALLOCATOR: embedded_alloc::Heap = embedded_alloc::Heap::empty();
|
||||
|
||||
#[cfg(not(test))]
|
||||
#[panic_handler]
|
||||
fn panic(_info: &core::panic::PanicInfo) -> ! {
|
||||
fn panic(_info: &PanicInfo) -> ! {
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[cfg(feature = "alloc")]
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "C" fn _critical_section_1_0_acquire() {}
|
||||
|
||||
#[cfg(feature = "alloc")]
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "C" fn _critical_section_1_0_release() {}
|
||||
|
||||
static HELLO_DATA: &[u8] = &[0x0A, 0x05, 0x57, 0x6f, 0x72, 0x6c, 0x64];
|
||||
|
||||
#[cfg(all(not(test), not(feature = "alloc")))]
|
||||
#[unsafe(no_mangle)]
|
||||
#[no_mangle]
|
||||
pub extern "C" fn _start() -> ! {
|
||||
#[cfg(not(feature = "alloc"))]
|
||||
{
|
||||
let hello = helloworld::Hello::new(HELLO_DATA).expect("failed to decode hello");
|
||||
let _name = hello.name().expect("failed to get name");
|
||||
if !_name.is_empty() {
|
||||
// Valid
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "alloc")]
|
||||
{
|
||||
use embedded_alloc::Heap;
|
||||
use core::mem::MaybeUninit;
|
||||
|
||||
static mut HEAP: Heap = Heap::empty();
|
||||
unsafe {
|
||||
core::ptr::addr_of_mut!(HEAP).write(embedded_alloc::Heap::empty());
|
||||
(*core::ptr::addr_of_mut!(HEAP)).init(MaybeUninit::<u8>::uninit().as_ptr() as *mut u8 as usize, 1024 * 1024);
|
||||
let owned_hello = helloworld::OwnedHello::decode(HELLO_DATA.into()).expect("failed to decode owned hello");
|
||||
let hello_reader = owned_hello.reader();
|
||||
let _name = hello_reader.name().expect("failed to get name");
|
||||
if !_name.is_empty() {
|
||||
// Valid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
loop {}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_helloworld_decoding() {
|
||||
let hello = helloworld::Hello::new(HELLO_DATA).expect("failed to decode hello");
|
||||
let name = hello.name().expect("failed to get name");
|
||||
assert!(!name.is_empty());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user