Skip to content

Commit

Permalink
v1003_alpha (full feature supported)
Browse files Browse the repository at this point in the history
1. Support for API mode;
2. Support for Arduino-ful MCU mode;
3. Support for AT commands;
4. Full AT commands supported(including OTA).
5. Optimization;
  • Loading branch information
CasyWang committed May 6, 2014
1 parent 22ac23f commit 26cfbe3
Show file tree
Hide file tree
Showing 49 changed files with 5,378 additions and 2,455 deletions.
22 changes: 22 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
50 changes: 25 additions & 25 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
build/gen/*
build/obj/*
###############
# fixed file #
###############
*.dbg
*.DBG
*.o
*.d
*.map
*.elf
*.DS_Store
.DS_Store

###############
# temp file #
###############
~*
*.log
*.cmm
*.men
*.ini
*.fig
*.cmp
*.tmp
build/gen/*
build/obj/*
###############
# fixed file #
###############
*.dbg
*.DBG
*.o
*.d
*.map
*.elf
*.DS_Store
.DS_Store

###############
# temp file #
###############
~*
*.log
*.cmm
*.men
*.ini
*.fig
*.cmp
*.tmp
162 changes: 81 additions & 81 deletions .project
Original file line number Diff line number Diff line change
@@ -1,81 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MeshBeeMasterBranch</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value>JENNIC_CHIP=JN5168 JENNIC_CHIP_FAMILY=JN516x PDM_BUILD_TYPE=_EEPROM CERTIFICATES=DEVELOPMENT_CERTS TARGET=COO</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${project_loc}/Build/</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>false</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MeshBeeMasterBranch</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
<dictionary>
<key>?name?</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.append_environment</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildArguments</key>
<value>JENNIC_CHIP=JN5168 JENNIC_CHIP_FAMILY=JN516x PDM_BUILD_TYPE=_EEPROM CERTIFICATES=DEVELOPMENT_CERTS TARGET=COO</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value>${project_loc}/Build/</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
<value>clean</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.contents</key>
<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>false</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
</natures>
</projectDescription>
60 changes: 52 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,61 @@
Mesh Bee
------------

Hi Makers, Mesh Bee is released.

![image](http://www.seeedstudio.com/wiki/images/6/6b/QQ20140327-1.png)

#### Abstract

Mesh Bee is a 2.4GHz wireless transceiver from seeed studio. It's based on NXP's newly JN516x series wireless microcontroller chip and supports ZigBee Pro network stack. The factory firmware wraps the complicated ZigBee stack operation into a few easy to use serial commands, and drives Mesh Bee into a transparent serial communication node that can be part of a simple point-to-point connection or a complex mesh network. Moreover, Mesh Bee is totally open hardware and open sourced, which means that you can customize the firmware on your requirements. You can use JN516x's ARM core to control things and JenOS to simplify your development. The developing environment and tools from NXP are all free.

MeshBee is a 2.4GHz wireless zigbee module from seeed studio. It uses microchip JN516x from NXP that enables
several different flvors of standards-based zigbee mesh networking. Our released firmware fully supports **ZigBee Pro** stack.
You can use MeshBee in two different ways: Master, Slave. In master mode,The factory firmware wraps the complicated ZigBee stack
operation into a few easy to use serial commands(AT Command), Mesh Bee can also work as a transparent serial communication node that can be
part of a simple point-to-point connection or a complex mesh network.In slave mode,user can control it through API frame.

Mesh Bee will bring you lots of fun.


#### 1.Software Architecture
##### 1.1 Slave mode
![image](https://raw.githubusercontent.com/CasyWang/Mesh_Bee/MeshBee_v1002/doc/MeshBeeSlave.jpg)

In this mode,other MCU connects to MeshBee and sends API frame through UART.

###### 1.1.1 What's API mode
API is simplfy a set of standard interfaces created to allow other MCU to interact with MeshBee.For our purposes,API supports
local control and remote control.For instance,PC can send an API frame to Coordinator A, A received this frame,and
execute sleeping command. The most important thing to note is that APIs are specifically engineered to enable MeshBee to talk
efficiently to other MCU.

Every transfer of information requires a protocol. We defined the API frame format like this(structure defined in firmware_at_api.h):

![image](https://raw.githubusercontent.com/CasyWang/Mesh_Bee/MeshBee_v1002/doc/ApiSpec_Frame.jpg)

Each frame has a start delimiter for sync.
Different types of frames contain different types of data structures,the Api Identifier tells us what type of API frame we are looking at.
Cmd name indicate which command you want to execute.

User can use our released library(On going) to package API frame.

###### 1.1.2 Network Topology at API mode

### Usage
In API mode,user's MCU which connected to the Coordinator, has the ability to access every node in network.

![image](https://raw.githubusercontent.com/CasyWang/Mesh_Bee/MeshBee_v1002/doc/MeshNetwork.jpg)

##### 1.2 Master mode
The most exciting thing to announce is that an arduino-ful user programming space(AUPS),by which you can treat MeshBee
as a wireless arduino, was provided.You can develop a stand-alone application in AUPS. The user application consists of two arduino-style functions
at the top level: setup & loop, which act just like arduino's.

![image](https://raw.githubusercontent.com/CasyWang/Mesh_Bee/MeshBee_v1002/doc/MeshBeeMaster.jpg)

##### 1.3 What's a Suli

We introduced Suli too. Suli means Seeed Unified Library Interface. We'll switch to Suli for our future module driver/library release. That means our suli-compatible library/driver will adapt all platforms that suli supporting. Please glance over https://github.com/Seeed-Studio/Suli for more information.



#### 2. Usage

1. Install the SDK toolchain;
2. Download this repo and put all files into a directory A (example);
Expand All @@ -20,7 +65,7 @@ Mesh Bee will bring you lots of fun.

The details are descripted at [this](http://www.seeedstudio.com/wiki/Mesh_Bee) wiki page, please launch there and find your need.

### Contribution
#### 3. Contribution

Contributing to this software is warmly welcomed. You can do this basically by
[forking](https://help.github.com/articles/fork-a-repo), committing modifications and then [pulling requests](https://help.github.com/articles/using-pull-requests) (follow the links above for operating guide). Adding change log and your contact into file header is encouraged.
Expand All @@ -34,7 +79,7 @@ And more, you can post on our discussion group at [here](https://groups.google.c

----

This software is written by Jack Shao (xuguang.shao@seeedstudio.com) for seeed studio<br>
This software is written by Jack Shao (xuguang.shao@seeedstudio.com) & Oliver Wang (long.wang@seeedstudio.com) for seeed studio<br>
and is licensed under [The MIT License](http://opensource.org/licenses/mit-license.php). Check License.txt for more information.<br>


Expand All @@ -54,4 +99,3 @@ global distributors and partners to push open hardware movement.<br>
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/Seeed-Studio/mesh_bee/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

[![Analytics](https://ga-beacon.appspot.com/UA-46589105-3/Mesh_Bee)](https://github.com/igrigorik/ga-beacon)

1 change: 1 addition & 0 deletions build/AppBuildRam_JN5168.ld
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ _image_len = (_flash_end - _flash_start + _ram_data_len + 3) & ~ 3;
_heap_start = __heap_start;
_heap_end = __heap_end;
_ram_top = ABSOLUTE(ORIGIN(ram)) + LENGTH(ram);
_free_ram_len = __heap_end - __heap_start - _minimum_heap_size;

__app_ram_start = 0x01001580; /* Page 5, word 8 (16-byte words, 16 words per page) */
PROVIDE(_heap_location = _u32HeapStart);
Loading

0 comments on commit 26cfbe3

Please sign in to comment.