Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move WireProtocol headers to CRL\Include #208

Merged
merged 1 commit into from
Mar 16, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CMake/Modules/FindWireProtocol.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#
# Copyright (c) 2017 The nanoFramework project contributors
# See LICENSE file in the project root for full license information.
#

# set include directories for Wire Protocol
list(APPEND WireProtocol_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/CLR/WireProtocol)
list(APPEND WireProtocol_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/src/CLR/Include)

# source files for Wire Protocol
set(WireProtocol_SRCS
Expand Down
9 changes: 9 additions & 0 deletions docs/architecture/memory-map-sructure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

```
{
"base":"0x08000000",
"blocks":[16,16,16,16,64,128,128,128,128,128,128,128]
}
```

[JSON validator](https://jsonformatter.curiousconcept.com/)
128 changes: 128 additions & 0 deletions src/CLR/Include/WireProtocol_MonitorCommands.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
//
// Copyright (c) 2017 The nanoFramework project contributors
// Portions Copyright (c) Microsoft Corporation. All rights reserved.
// See LICENSE file in the project root for full license information.
//

#ifndef _WIREPROTOCOL_COMMANDS_H_
#define _WIREPROTOCOL_COMMANDS_H_

#include "WireProtocol_v2.h"
#include "WireProtocol_Message.h"

//////////////////////////////////////////
// enums

// structure for Monitor Reboot options
// backwards compatible with .NETMF
typedef enum Monitor_Reboot_Options
{
Monitor_Reboot_c_NormalReboot = 0,
Monitor_Reboot_c_EnterBootloader = 1,
Monitor_Reboot_c_ClrRebootOnly = 2,
Monitor_Reboot_c_ClrStopDebugger = 4
}Monitor_Reboot_Options;

// structure for Access Memory operations
typedef enum AccessMemory_Operations
{
// check if memory space is erased
AccessMemory_Check = 0x00,

// read block of data starting at a given address
AccessMemory_Read = 0x01,

// write block of data starting at a given address
AccessMemory_Write = 0x02,

// erase sector/block/page at a given address
AccessMemory_Erase = 0x03,


AccessMemory_Mask = 0x0F

}AccessMemory_Operations;

typedef enum MemoryMap_Options
{
Monitor_MemoryMap_c_RAM = 0x00000001,
Monitor_MemoryMap_c_FLASH = 0x00000002,

}MemoryMap_Options;

//////////////////////////////////////////
// typedefs

// structure for Monitor Ping Reply
// backwards compatible with .NETMF
typedef struct Monitor_Ping_Reply
{
uint32_t m_source;
uint32_t m_dbg_flags;

}Monitor_Ping_Reply;

// structure with reply for OEM information command
typedef struct Monitor_OemInfo_Reply
{
ReleaseInfo m_releaseInfo;

}Monitor_OemInfo_Reply;

typedef struct CLR_DBG_Commands_Monitor_WriteMemory
{
uint32_t address;
uint32_t length;
uint8_t data[1];

}CLR_DBG_Commands_Monitor_WriteMemory;

typedef struct Monitor_Reboot_Command
{
uint32_t m_flags;

}Monitor_Reboot_Command;

typedef struct CLR_DBG_Commands_Monitor_EraseMemory
{
uint32_t address;
uint32_t length;

}CLR_DBG_Commands_Monitor_EraseMemory;

typedef struct MemoryMap_Range
{
uint32_t m_address;
uint32_t m_length;
uint32_t m_flags;

}MemoryMap_Range;


typedef struct CLR_DBG_Commands_Monitor_MemoryMap
{
MemoryMap_Range m_map[1];

}CLR_DBG_Commands_Monitor_MemoryMap;


//////////////////////////////////////////
// function declarations (commands)

#ifdef __cplusplus
extern "C" {
#endif

bool Monitor_Ping(WP_Message* message);
bool Monitor_OemInfo(WP_Message* message);
bool Monitor_WriteMemory(WP_Message* message);
bool Monitor_Reboot(WP_Message* message);
bool Monitor_EraseMemory(WP_Message* message);
bool Monitor_MemoryMap(WP_Message* message);

#ifdef __cplusplus
}
#endif

#endif //_WIREPROTOCOL_COMMANDS_H_

Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,19 @@ typedef struct WP_Packet
uint32_t m_size;
}WP_Packet;

typedef struct WP_Controller
{
uint8_t* m_szMarker;

uint16_t m_lastOutboundMessage;

bool (*AdvanceState)(void);
void (*Initialize)(void* szMarker, void* phy, void* app, void* state );
//bool (*SendProtocolMessage)( const void* msg );
bool (*SendProtocolMessage)( uint32_t cmd, uint32_t flags, uint32_t payloadSize, uint8_t* payload);

}WP_Controller;

// structure for Wire Protocol message
// backwards compatible with .NETMF equivalent in names and types to help code reuse
typedef struct WP_Message
Expand All @@ -104,21 +117,21 @@ typedef struct WP_Message
uint8_t* m_pos;
uint16_t m_size;
int m_rxState;
}WP_Message;

typedef struct WP_Controller
{
uint8_t* m_szMarker;
void (*Initialize)(WP_Controller* parent);
void (*PrepareReception)(void);
void (*PrepareRequest)(unsigned int cmd, unsigned int flags, unsigned int payloadSize, unsigned char* payload);
void (*PrepareReply)(const void** req, unsigned int flags, unsigned int payloadSize, unsigned char* payload);
void (*SetPayload)(unsigned char* payload);
void (*Release)(void);
bool (*Process)(void);

uint16_t m_lastOutboundMessage;
bool (*VerifyHeader)(void);
bool (*VerifyPayload)(void);
void (*ReplyBadPacket)(unsigned int flags);

bool (*AdvanceState)(void);
//void (*Initialize)(LPCSTR szMarker, const WP_PhysicalLayer* phy, const WP_ApplicationLayer* app, void* state );
void (*Initialize)(void* szMarker, void* phy, void* app, void* state );
//bool (*SendProtocolMessage)( const void* msg );
bool (*SendProtocolMessage)( uint32_t cmd, uint32_t flags, uint32_t payloadSize, uint8_t* payload);
}WP_Message;

}WP_Controller;

// enum with flags for Monitor ping source and debugger flags
// backwards compatible with .NETMF in debugger flags only
Expand Down