Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

cloudbrew demos

  • Loading branch information...
commit c8fcb72c67cbe9016960512171b245b00e3e48f8 1 parent aff97a0
@AndyCross AndyCross authored
View
13 TestRunner/Tests/TableTests.cs
@@ -22,9 +22,22 @@ public void Run()
AzureStorageHttpHelper.AttachFiddler = true;
this.TestCreate();
+
+ var startTime = DateTime.Now;
this.TestInsert();
+ var completeTime = DateTime.Now;
+ Debug.Print("Original Time = " + (completeTime - startTime).ToString());
+
+ startTime = DateTime.Now;
this.TestInsertDouble();
+ completeTime = DateTime.Now;
+ Debug.Print("Double Time = " + (completeTime - startTime).ToString());
+
+ startTime = DateTime.Now;
this.TestInsertExperimental();
+ completeTime = DateTime.Now;
+ Debug.Print("Experimental Time = " + (completeTime - startTime).ToString());
+
this.QuerySingleEntity();
this.QueryMultipleEntities();
this.UpdateTableEntity();
View
104 cloudbrew1/Program.cs
@@ -0,0 +1,104 @@
+using System;
+using Microsoft.SPOT;
+using Microsoft.SPOT.Hardware;
+using SecretLabs.NETMF.Hardware.NetduinoPlus;
+using NetMf.CommonExtensions;
+using System.IO;
+using System.Text;
+using netmfazurestorage.Helper;
+
+namespace cloudbrew1
+{
+ /// <summary>
+ /// This is a basic demo of NETMF and IO.
+ /// </summary>
+ public class Program
+ {
+ static InterruptPort _onBoardButton;
+ static AnalogInput _analogInput;
+ private static object Padlock = new object();
+ private static string _macAddress;
+
+ public static void Main()
+ {
+ //DeviceAssist.SetupDefault();
+
+ try
+ {
+ if (File.Exists("\\SD\\Data.csv"))
+ {
+ File.Delete("\\SD\\Data.csv");
+ }
+
+ _onBoardButton = new InterruptPort(Pins.ONBOARD_SW1, true,
+ Port.ResistorMode.Disabled,
+ Port.InterruptMode.InterruptEdgeHigh);
+ _onBoardButton.OnInterrupt += onBoardButton_OnInterrupt;
+
+ _macAddress = "holding";
+ }
+ catch (Exception ex) {
+ //there was an error setting up the device
+ throw;
+ }
+
+ _analogInput = new AnalogInput(AnalogChannels.ANALOG_PIN_A0);
+
+ int counter = 0;
+ while (true)
+ {
+ counter++;
+ var data = _analogInput.Read() * 40D;
+
+ lock (Padlock)
+ {
+ using (FileStream fs = File.Open("\\SD\\Data.csv", FileMode.Append, FileAccess.Write))
+ {
+ Debug.Print(data.ToString());
+ var dataBytes = Encoding.UTF8.GetBytes(
+ StringUtility.Format("{0}, {1}, {2}\r\n",
+ _macAddress, DateTime.Now.ToString(),
+ data)
+ );
+
+ fs.Write(dataBytes, 0, dataBytes.Length);
+ fs.Flush();
+ }
+ }
+
+ System.Threading.Thread.Sleep(1000);
+ Debug.Print("Working");
+ }
+ }
+
+
+ static void onBoardButton_OnInterrupt(uint data1, uint data2, DateTime time)
+ {
+ try
+ {
+ lock (Padlock)
+ {
+ var filename = StringUtility.Format("{0}.csv", time.ToString("yyyyMMddhhmmss"));
+ Debug.Print(filename);
+ var success = true;
+ //var success = _blobClient.PutBlob("demo",
+ // filename,
+ // "\\SD\\Data.csv");
+
+ if (success)
+ {
+ Debug.Print("Files uploaded to netmf.blob.core.windows.net");
+ }
+ else
+ {
+ Debug.Print("There was an error, check debug output");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Debug.Print("Critical error: " + ex);
+ }
+ }
+ }
+}
View
25 cloudbrew1/Properties/AssemblyInfo.cs
@@ -0,0 +1,25 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("cloudbrew1")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("cloudbrew1")]
+[assembly: AssemblyCopyright("Copyright © 2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
38 cloudbrew1/Resources.Designer.cs
@@ -0,0 +1,38 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.42
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace cloudbrew1
+{
+
+ internal class Resources
+ {
+ private static System.Resources.ResourceManager manager;
+ internal static System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((Resources.manager == null))
+ {
+ Resources.manager = new System.Resources.ResourceManager("cloudbrew1.Resources", typeof(Resources).Assembly);
+ }
+ return Resources.manager;
+ }
+ }
+ internal static string GetString(Resources.StringResources id)
+ {
+ return ((string)(Microsoft.SPOT.ResourceUtility.GetObject(ResourceManager, id)));
+ }
+ [System.SerializableAttribute()]
+ internal enum StringResources : short
+ {
+ String1 = 1228,
+ }
+ }
+}
View
123 cloudbrew1/Resources.resx
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="String1" xml:space="preserve">
+ <value>Hello World!</value>
+ </data>
+</root>
View
61 cloudbrew1/cloudbrew1.csproj
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <AssemblyName>cloudbrew1</AssemblyName>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>cloudbrew1</RootNamespace>
+ <ProjectTypeGuids>{b69e3092-b931-443c-abe7-7e7b65f2a37f};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{6864EE32-5746-420B-A92A-218234829905}</ProjectGuid>
+ <TargetFrameworkVersion>v4.2</TargetFrameworkVersion>
+ <NetMfTargetsBaseDir Condition="'$(NetMfTargetsBaseDir)'==''">$(MSBuildExtensionsPath32)\Microsoft\.NET Micro Framework\</NetMfTargetsBaseDir>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <Import Project="$(NetMfTargetsBaseDir)$(TargetFrameworkVersion)\CSharp.Targets" />
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.SPOT.Hardware" />
+ <Reference Include="Microsoft.SPOT.Native">
+ </Reference>
+ <Reference Include="SecretLabs.NETMF.Hardware.NetduinoPlus, Version=4.2.2.0, Culture=neutral, processorArchitecture=MSIL" />
+ <Reference Include="System.IO" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Resources.resx">
+ <SubType>Designer</SubType>
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\netmfazurestorage\netmfazurestorage.csproj">
+ <Project>{1662719F-BF15-4E0A-B4FA-86F29D4B078D}</Project>
+ <Name>netmfazurestorage</Name>
+ </ProjectReference>
+ </ItemGroup>
+</Project>
View
113 cloudbrew2/Program.cs
@@ -0,0 +1,113 @@
+using System;
+using Microsoft.SPOT;
+using Microsoft.SPOT.Hardware;
+using SecretLabs.NETMF.Hardware.NetduinoPlus;
+using NetMf.CommonExtensions;
+using System.IO;
+using System.Text;
+using netmfazurestorage.Blob;
+using netmfazurestorage.Helper;
+
+namespace cloudbrew2
+{
+ /// <summary>
+ /// This is a basic demo of NETMF and IO.
+ /// </summary>
+ public class Program
+ {
+ static InterruptPort _onBoardButton;
+ static AnalogInput _analogInput;
+ private static object Padlock = new object();
+ private static string _macAddress;
+
+ private static BlobClient _blobClient;
+
+ private const string AccountName = "netmftest"; // please upload pictures of cats and other larger animals to this storage account.
+ private const string AccountKey = "gYU/Nf/ib97kHQrVkxhdD3y0lKz6ZOVaR1FjeDpESecGuqZOEq1TE+5+SXfZ/DBzKsXH3m0NDsLxTbTqQxL9yA==";
+
+ public static void Main()
+ {
+ DeviceAssist.SetupDefault();
+
+ try
+ {
+ if (File.Exists("\\SD\\Data.csv"))
+ {
+ File.Delete("\\SD\\Data.csv");
+ }
+
+ _onBoardButton = new InterruptPort(Pins.ONBOARD_SW1, true,
+ Port.ResistorMode.Disabled,
+ Port.InterruptMode.InterruptEdgeHigh);
+ _onBoardButton.OnInterrupt += onBoardButton_OnInterrupt;
+
+ _macAddress = "holding";
+
+ _blobClient = new BlobClient(new netmfazurestorage.Account.CloudStorageAccount(AccountName, AccountKey));
+ }
+ catch (Exception ex)
+ {
+ //there was an error setting up the device
+ throw;
+ }
+
+ _analogInput = new AnalogInput(AnalogChannels.ANALOG_PIN_A0);
+
+ int counter = 0;
+ while (true)
+ {
+ counter++;
+ var data = _analogInput.Read() * 40D;
+
+ lock (Padlock)
+ {
+ using (FileStream fs = File.Open("\\SD\\Data.csv", FileMode.Append, FileAccess.Write))
+ {
+ Debug.Print(data.ToString());
+ var dataBytes = Encoding.UTF8.GetBytes(
+ StringUtility.Format("{0}, {1}, {2}\r\n",
+ _macAddress, DateTime.Now.ToString(),
+ data)
+ );
+
+ fs.Write(dataBytes, 0, dataBytes.Length);
+ fs.Flush();
+ }
+ }
+
+ System.Threading.Thread.Sleep(1000);
+ Debug.Print("Working");
+ }
+ }
+
+
+ static void onBoardButton_OnInterrupt(uint data1, uint data2, DateTime time)
+ {
+ try
+ {
+ lock (Padlock)
+ {
+ var filename = StringUtility.Format("{0}.csv", time.ToString("yyyyMMddhhmmss"));
+ Debug.Print(filename);
+
+ var success = _blobClient.PutBlockBlob("demo",
+ filename,
+ "\\SD\\Data.csv");
+
+ if (success)
+ {
+ Debug.Print("Files uploaded to netmf.blob.core.windows.net");
+ }
+ else
+ {
+ Debug.Print("There was an error, check debug output");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Debug.Print("Critical error: " + ex);
+ }
+ }
+ }
+}
View
25 cloudbrew2/Properties/AssemblyInfo.cs
@@ -0,0 +1,25 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("cloudbrew2")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("cloudbrew2")]
+[assembly: AssemblyCopyright("Copyright © 2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
38 cloudbrew2/Resources.Designer.cs
@@ -0,0 +1,38 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.42
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace cloudbrew2
+{
+
+ internal class Resources
+ {
+ private static System.Resources.ResourceManager manager;
+ internal static System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((Resources.manager == null))
+ {
+ Resources.manager = new System.Resources.ResourceManager("cloudbrew2.Resources", typeof(Resources).Assembly);
+ }
+ return Resources.manager;
+ }
+ }
+ internal static string GetString(Resources.StringResources id)
+ {
+ return ((string)(Microsoft.SPOT.ResourceUtility.GetObject(ResourceManager, id)));
+ }
+ [System.SerializableAttribute()]
+ internal enum StringResources : short
+ {
+ String1 = 1228,
+ }
+ }
+}
View
123 cloudbrew2/Resources.resx
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="String1" xml:space="preserve">
+ <value>Hello World!</value>
+ </data>
+</root>
View
61 cloudbrew2/cloudbrew2.csproj
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <AssemblyName>cloudbrew2</AssemblyName>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>cloudbrew2</RootNamespace>
+ <ProjectTypeGuids>{b69e3092-b931-443c-abe7-7e7b65f2a37f};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{BEC8B86E-FCDC-4F1C-9572-D89597F06B76}</ProjectGuid>
+ <TargetFrameworkVersion>v4.2</TargetFrameworkVersion>
+ <NetMfTargetsBaseDir Condition="'$(NetMfTargetsBaseDir)'==''">$(MSBuildExtensionsPath32)\Microsoft\.NET Micro Framework\</NetMfTargetsBaseDir>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <Import Project="$(NetMfTargetsBaseDir)$(TargetFrameworkVersion)\CSharp.Targets" />
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.SPOT.Hardware" />
+ <Reference Include="Microsoft.SPOT.Native">
+ </Reference>
+ <Reference Include="SecretLabs.NETMF.Hardware.NetduinoPlus, Version=4.2.2.0, Culture=neutral, processorArchitecture=MSIL" />
+ <Reference Include="System.IO" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Resources.resx">
+ <SubType>Designer</SubType>
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\netmfazurestorage\netmfazurestorage.csproj">
+ <Project>{1662719F-BF15-4E0A-B4FA-86F29D4B078D}</Project>
+ <Name>netmfazurestorage</Name>
+ </ProjectReference>
+ </ItemGroup>
+</Project>
View
6 netmfazurestorage/Blob/BlobClient.cs
@@ -11,18 +11,18 @@
namespace netmfazurestorage.Blob
{
- internal class BlobClient
+ public class BlobClient
{
private readonly CloudStorageAccount _account;
- internal BlobClient(CloudStorageAccount account)
+ public BlobClient(CloudStorageAccount account)
{
_account = account;
HttpVerb = "PUT";
DateHeader = DateTime.Now.ToString("R");
}
- internal bool PutBlockBlob(string containerName, string blobName, string fileNamePath)
+ public bool PutBlockBlob(string containerName, string blobName, string fileNamePath)
{
try
{
View
30 netmfazurestorage/Helper/DeviceAssist.cs
@@ -0,0 +1,30 @@
+using System;
+using Microsoft.SPOT;
+using Microsoft.SPOT.Net.NetworkInformation;
+using netmfazurestorage.NTP;
+using Microsoft.SPOT.Hardware;
+
+namespace netmfazurestorage.Helper
+{
+ public class DeviceAssist
+ {
+ public static void SetupDefault() {
+ NetworkInterface networkInterface = NetworkInterface.GetAllNetworkInterfaces()[0];
+
+ if (!networkInterface.IsDhcpEnabled || !networkInterface.IsDynamicDnsEnabled)
+ {
+ networkInterface.EnableDhcp();
+ networkInterface.EnableDynamicDns();
+ networkInterface.RenewDhcpLease();
+
+ Debug.Print("Interface set to " + networkInterface.IPAddress);
+ }
+
+ if (DateTime.Now < new DateTime(2012, 01, 01))
+ {
+ var networkTime = NtpClient.GetNetworkTime();
+ Utility.SetLocalTime(networkTime);
+ }
+ }
+ }
+}
View
194 netmfazurestorage/cloudbrew3/Program.cs
@@ -0,0 +1,194 @@
+using System;
+using Microsoft.SPOT;
+using netmfazurestorage.Queue;
+using netmfazurestorage.Table;
+using System.Net;
+using System.Collections;
+using netmfazurestorage.Helper;
+
+namespace cloudbrew3
+{
+ public class Program
+ {
+ private static QueueClient _queueClient;
+ private static TableClient _blobClient;
+ private const string AccountName = "netmftest"; // please upload pictures of cats and other larger animals to this storage account.
+ private const string AccountKey = "gYU/Nf/ib97kHQrVkxhdD3y0lKz6ZOVaR1FjeDpESecGuqZOEq1TE+5+SXfZ/DBzKsXH3m0NDsLxTbTqQxL9yA==";
+
+ public static void Main()
+ {
+ DeviceAssist.SetupDefault();
+
+ var account = new netmfazurestorage.Account.CloudStorageAccount(AccountName, AccountKey);
+ _queueClient = new QueueClient(account);
+ _blobClient = new TableClient(account);
+
+ var cloudBrew = "lotsofbeer";
+
+ CreateQueue(cloudBrew);
+ CreateQueueMessage(cloudBrew, "Skynet is READY");
+ var peeked = PeekQueueMessage(cloudBrew);
+ Debug.Print(peeked.MessageId);
+
+ var message = RetrieveQueueMessage(cloudBrew);
+ Debug.Print(message.MessageId);
+
+ Debug.Assert(peeked.MessageId == message.MessageId);
+ DeleteQueueMessage(cloudBrew, message.MessageId, message.PopReceipt);
+ DeleteQueue(cloudBrew);
+
+ //table approach
+ TestCreate();
+
+ var startTime = DateTime.Now;
+ TestInsert();
+ var completeTime = DateTime.Now;
+ Debug.Print("Original Time = " + (completeTime - startTime).ToString());
+
+ startTime = DateTime.Now;
+ TestInsertDouble();
+ completeTime = DateTime.Now;
+ Debug.Print("Double Time = " + (completeTime - startTime).ToString());
+
+ startTime = DateTime.Now;
+ TestInsertExperimental();
+ completeTime = DateTime.Now;
+ Debug.Print("Experimental Time = " + (completeTime - startTime).ToString());
+
+ QuerySingleEntity();
+ QueryMultipleEntities();
+ UpdateTableEntity();
+
+ }
+ private static QueueMessageWrapper PeekQueueMessage(string queueName)
+ {
+ return _queueClient.PeekQueueMessage(queueName);
+ }
+
+ private static void DeleteQueue(string queueName)
+ {
+ _queueClient.DeleteQueue(queueName);
+ }
+
+ private static void DeleteQueueMessage(string queueName, string messageId, string popReceipt)
+ {
+ _queueClient.DeleteMessage(queueName, messageId, popReceipt);
+ }
+
+ private static QueueMessageWrapper RetrieveQueueMessage(string queueName)
+ {
+ var message = _queueClient.RetrieveQueueMessage(queueName);
+ Debug.Print(message.Message);
+
+ return message;
+ }
+
+ private static void CreateQueue(string queueName)
+ {
+ _queueClient.CreateQueue(queueName);
+ }
+
+ private static void CreateQueueMessage(string queueName, string messageBody)
+ {
+ _queueClient.CreateQueueMessage(queueName, messageBody);
+ }
+
+
+ private static void TestCreate()
+ {
+ _blobClient.CreateTable("ranetmftest");
+
+ }
+
+ public static void TestInsert()
+ {
+ var values = new System.Collections.ArrayList();
+ var tep = new TableEntityProperty();
+ tep.Name = "field1";
+ tep.Value = "value1";
+ tep.Type = "Edm.String";
+
+ values.Add(tep);
+
+ tep = new TableEntityProperty();
+ tep.Name = "field2";
+ tep.Value = "value2";
+ tep.Type = "Edm.String";
+ values.Add(tep);
+
+ var code = _blobClient.InsertTableEntity("ranetmftest", "1", Guid.NewGuid().ToString(), DateTime.UtcNow, values);
+ Debug.Assert(HttpStatusCode.Created == code.StatusCode);
+ }
+
+ public static void TestInsertDouble()
+ {
+ var values = new System.Collections.ArrayList();
+ var tep = new TableEntityProperty();
+ tep.Name = "field1";
+ tep.Value = "value1";
+ tep.Type = "Edm.String";
+
+ values.Add(tep);
+
+ tep = new TableEntityProperty();
+ tep.Name = "field2";
+ tep.Value = "value2";
+ tep.Type = "Edm.String";
+ values.Add(tep);
+
+ tep = new TableEntityProperty();
+ tep.Name = "field3";
+ tep.Value = "5.0";
+ tep.Type = "Edm.Double";
+ values.Add(tep);
+
+ var code = _blobClient.InsertTableEntity("ranetmftest", "1", Guid.NewGuid().ToString(), DateTime.Now, values);
+ Debug.Assert(HttpStatusCode.Created == code.StatusCode);
+ }
+
+
+ public static void TestInsertExperimental()
+ {
+ var values = new Hashtable();
+ values.Add("guidfield", Guid.NewGuid());
+ values.Add("int32field", 32);
+ values.Add("stringfield", "string");
+ //values.Add("datetimefield", DateTime.Now); // not sure why this is appearing as a null in the table
+ values.Add("doublefield", (double)123.22);
+ values.Add("int64field", (Int64)64);
+ values.Add("boolfield", true);
+ var code = _blobClient.InsertTableEntity("ranetmftest", "2", Guid.NewGuid().ToString(), DateTime.Now, values);
+ Debug.Assert(code == System.Net.HttpStatusCode.Created);
+ }
+
+ public static void QuerySingleEntity()
+ {
+ var output = _blobClient.QueryTable("ranetmftest", "2", "2b331c6e-4d7b-152b-d433-5c1a57988a75");
+ Debug.Assert(null != output);
+ }
+
+ public static void QueryMultipleEntities()
+ {
+ var output = _blobClient.QueryTable("ranetmftest", "PartitionKey eq '2'");
+ Debug.Assert(null != output);
+ Debug.Assert(output.Count > 0);
+ }
+
+ public static void UpdateTableEntity()
+ {
+ var rowKey = Guid.NewGuid();
+ var values = new Hashtable();
+ values.Add("guidfield", Guid.NewGuid());
+ values.Add("int32field", 32);
+ values.Add("stringfield", "string");
+ //values.Add("datetimefield", DateTime.Now); // not sure why this is appearing as a null in the table
+ values.Add("doublefield", (double)123.22);
+ values.Add("int64field", (Int64)64);
+ values.Add("boolfield", true);
+ var code1 = _blobClient.InsertTableEntity("ranetmftest", "3", rowKey.ToString(), DateTime.Now, values);
+
+ values["stringfield"] = "updated string";
+ var code2 = _blobClient.UpdateTableEntity("ranetmftest", "3", rowKey.ToString(), DateTime.Now, values);
+ }
+ }
+}
View
25 netmfazurestorage/cloudbrew3/Properties/AssemblyInfo.cs
@@ -0,0 +1,25 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("cloudbrew3")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("cloudbrew3")]
+[assembly: AssemblyCopyright("Copyright © 2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
38 netmfazurestorage/cloudbrew3/Resources.Designer.cs
@@ -0,0 +1,38 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:2.0.50727.42
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace cloudbrew3
+{
+
+ internal class Resources
+ {
+ private static System.Resources.ResourceManager manager;
+ internal static System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((Resources.manager == null))
+ {
+ Resources.manager = new System.Resources.ResourceManager("cloudbrew3.Resources", typeof(Resources).Assembly);
+ }
+ return Resources.manager;
+ }
+ }
+ internal static string GetString(Resources.StringResources id)
+ {
+ return ((string)(Microsoft.SPOT.ResourceUtility.GetObject(ResourceManager, id)));
+ }
+ [System.SerializableAttribute()]
+ internal enum StringResources : short
+ {
+ String1 = 1228,
+ }
+ }
+}
View
123 netmfazurestorage/cloudbrew3/Resources.resx
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="String1" xml:space="preserve">
+ <value>Hello World!</value>
+ </data>
+</root>
View
59 netmfazurestorage/cloudbrew3/cloudbrew3.csproj
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <AssemblyName>cloudbrew3</AssemblyName>
+ <OutputType>Exe</OutputType>
+ <RootNamespace>cloudbrew3</RootNamespace>
+ <ProjectTypeGuids>{b69e3092-b931-443c-abe7-7e7b65f2a37f};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}</ProjectGuid>
+ <TargetFrameworkVersion>v4.2</TargetFrameworkVersion>
+ <NetMfTargetsBaseDir Condition="'$(NetMfTargetsBaseDir)'==''">$(MSBuildExtensionsPath32)\Microsoft\.NET Micro Framework\</NetMfTargetsBaseDir>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <Import Project="$(NetMfTargetsBaseDir)$(TargetFrameworkVersion)\CSharp.Targets" />
+ <ItemGroup>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Resources.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Resources.resx</DependentUpon>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <Reference Include="Microsoft.SPOT.Native">
+ </Reference>
+ <Reference Include="System.Http" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Resources.resx">
+ <SubType>Designer</SubType>
+ <Generator>ResXFileCodeGenerator</Generator>
+ <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\netmfazurestorage.csproj">
+ <Project>{1662719F-BF15-4E0A-B4FA-86F29D4B078D}</Project>
+ <Name>netmfazurestorage</Name>
+ </ProjectReference>
+ </ItemGroup>
+</Project>
View
1  netmfazurestorage/netmfazurestorage.csproj
@@ -38,6 +38,7 @@
<ItemGroup>
<Compile Include="Account\CloudStorageAccount.cs" />
<Compile Include="Blob\BlobClient.cs" />
+ <Compile Include="Helper\DeviceAssist.cs" />
<Compile Include="HMAC\SHA.cs" />
<Compile Include="Http\BasicHttpResponse.cs" />
<Compile Include="Http\AzureStorageHttpHelper.cs" />
View
24 netmfazurestorage/netmfazurestorage.sln
@@ -5,6 +5,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "netmfazurestorage", "netmfa
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestRunner", "..\TestRunner\TestRunner.csproj", "{0561F84F-D368-4A83-8D5E-4058B4E30909}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cloudbrew1", "..\cloudbrew1\cloudbrew1.csproj", "{6864EE32-5746-420B-A92A-218234829905}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cloudbrew2", "..\cloudbrew2\cloudbrew2.csproj", "{BEC8B86E-FCDC-4F1C-9572-D89597F06B76}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cloudbrew3", "cloudbrew3\cloudbrew3.csproj", "{EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -23,6 +29,24 @@ Global
{0561F84F-D368-4A83-8D5E-4058B4E30909}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0561F84F-D368-4A83-8D5E-4058B4E30909}.Release|Any CPU.Build.0 = Release|Any CPU
{0561F84F-D368-4A83-8D5E-4058B4E30909}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {6864EE32-5746-420B-A92A-218234829905}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6864EE32-5746-420B-A92A-218234829905}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6864EE32-5746-420B-A92A-218234829905}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {6864EE32-5746-420B-A92A-218234829905}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6864EE32-5746-420B-A92A-218234829905}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6864EE32-5746-420B-A92A-218234829905}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {BEC8B86E-FCDC-4F1C-9572-D89597F06B76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BEC8B86E-FCDC-4F1C-9572-D89597F06B76}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEC8B86E-FCDC-4F1C-9572-D89597F06B76}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {BEC8B86E-FCDC-4F1C-9572-D89597F06B76}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BEC8B86E-FCDC-4F1C-9572-D89597F06B76}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEC8B86E-FCDC-4F1C-9572-D89597F06B76}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EFC7D8D5-3863-4411-91D0-E4B2BA82FC54}.Release|Any CPU.Deploy.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Please sign in to comment.
Something went wrong with that request. Please try again.