Winrt (#545)
* initial winrt work * Add new vid/pid * E2E working * Remove wrong hid selector
@ -31,89 +31,87 @@ namespace pxt.editor {
|
|||||||
|
|
||||||
class DAPWrapper {
|
class DAPWrapper {
|
||||||
cortexM: DapJS.CortexM
|
cortexM: DapJS.CortexM
|
||||||
|
packetIo: HF2.PacketIO;
|
||||||
|
|
||||||
constructor(h: HF2.PacketIO) {
|
constructor(h: HF2.PacketIO) {
|
||||||
let pbuf = new U.PromiseBuffer<Uint8Array>()
|
this.packetIo = h;
|
||||||
|
let pbuf = new U.PromiseBuffer<Uint8Array>();
|
||||||
|
|
||||||
let sendMany = (cmds: Uint8Array[]) => {
|
let sendMany = (cmds: Uint8Array[]) => {
|
||||||
return h.talksAsync(cmds.map(c => ({ cmd: 0, data: c })))
|
return h.talksAsync(cmds.map(c => ({ cmd: 0, data: c })));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!h.talksAsync)
|
if (!h.talksAsync)
|
||||||
sendMany = null
|
sendMany = null;
|
||||||
|
|
||||||
let dev = new DapJS.DAP({
|
let dev = new DapJS.DAP({
|
||||||
write: writeAsync,
|
write: writeAsync,
|
||||||
close: closeAsync,
|
close: this.disconnectAsync,
|
||||||
read: readAsync,
|
read: readAsync,
|
||||||
sendMany: sendMany
|
sendMany: sendMany
|
||||||
})
|
});
|
||||||
this.cortexM = new DapJS.CortexM(dev)
|
this.cortexM = new DapJS.CortexM(dev);
|
||||||
|
|
||||||
h.onData = buf => {
|
h.onData = buf => {
|
||||||
pbuf.push(buf)
|
pbuf.push(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeAsync(data: ArrayBuffer) {
|
function writeAsync(data: ArrayBuffer) {
|
||||||
h.sendPacketAsync(new Uint8Array(data))
|
h.sendPacketAsync(new Uint8Array(data));
|
||||||
return Promise.resolve()
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
function readAsync() {
|
function readAsync() {
|
||||||
return pbuf.shiftAsync()
|
return pbuf.shiftAsync();
|
||||||
}
|
|
||||||
|
|
||||||
function closeAsync() {
|
|
||||||
return h.disconnectAsync()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
reconnectAsync(first: boolean) {
|
reconnectAsync(first: boolean) {
|
||||||
return this.cortexM.init()
|
return this.cortexM.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
disconnectAsync() {
|
||||||
|
return this.packetIo.disconnectAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let previousDapWrapper: DAPWrapper;
|
||||||
function dapAsync() {
|
function dapAsync() {
|
||||||
return pxt.HF2.mkPacketIOAsync()
|
return Promise.resolve()
|
||||||
|
.then(() => {
|
||||||
|
if (previousDapWrapper) {
|
||||||
|
return previousDapWrapper.disconnectAsync()
|
||||||
|
.finally(() => {
|
||||||
|
previousDapWrapper = null;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
})
|
||||||
|
.then(() => pxt.HF2.mkPacketIOAsync())
|
||||||
.then(h => {
|
.then(h => {
|
||||||
let w = new DAPWrapper(h)
|
let w = new DAPWrapper(h)
|
||||||
|
previousDapWrapper = w;
|
||||||
return w.reconnectAsync(true)
|
return w.reconnectAsync(true)
|
||||||
.then(() => w)
|
.then(() => w)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let noHID = false
|
|
||||||
|
|
||||||
let initPromise: Promise<DAPWrapper>
|
|
||||||
function initAsync() {
|
function initAsync() {
|
||||||
if (initPromise)
|
|
||||||
return initPromise
|
|
||||||
|
|
||||||
let canHID = false
|
let canHID = false
|
||||||
if (U.isNodeJS) {
|
if (U.isNodeJS) {
|
||||||
canHID = true
|
canHID = true
|
||||||
} else {
|
} else {
|
||||||
const forceHexDownload = /forceHexDownload/i.test(window.location.href);
|
const forceHexDownload = /forceHexDownload/i.test(window.location.href);
|
||||||
if (Cloud.isLocalHost() && Cloud.localToken && !forceHexDownload)
|
const isUwp = !!(window as any).Windows;
|
||||||
|
if (Cloud.isLocalHost() && Cloud.localToken && !forceHexDownload || isUwp)
|
||||||
canHID = true
|
canHID = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noHID)
|
|
||||||
canHID = false
|
|
||||||
|
|
||||||
if (canHID) {
|
if (canHID) {
|
||||||
initPromise = dapAsync()
|
return dapAsync();
|
||||||
.catch(err => {
|
|
||||||
initPromise = null
|
|
||||||
noHID = true
|
|
||||||
return Promise.reject(err)
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
noHID = true
|
return Promise.reject(new Error("no HID"))
|
||||||
initPromise = Promise.reject(new Error("no HID"))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return initPromise
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function pageAlignBlocks(blocks: UF2.Block[], pageSize: number) {
|
function pageAlignBlocks(blocks: UF2.Block[], pageSize: number) {
|
||||||
@ -234,13 +232,8 @@ namespace pxt.editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
startTime = 0
|
startTime = 0
|
||||||
|
|
||||||
if (noHID) return saveHexAsync()
|
|
||||||
|
|
||||||
let wrap: DAPWrapper
|
let wrap: DAPWrapper
|
||||||
|
|
||||||
log("init")
|
log("init")
|
||||||
|
|
||||||
let logV = (msg: string) => { }
|
let logV = (msg: string) => { }
|
||||||
//let logV = log
|
//let logV = log
|
||||||
|
|
||||||
@ -339,11 +332,7 @@ namespace pxt.editor {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
.catch(e => {
|
.catch(e => {
|
||||||
// if we failed to initalize, retry
|
return saveHexAsync();
|
||||||
if (noHID)
|
|
||||||
return saveHexAsync()
|
|
||||||
else
|
|
||||||
return Promise.reject(e)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,16 +360,16 @@ namespace pxt.editor {
|
|||||||
}, name: data.meta.name
|
}, name: data.meta.name
|
||||||
})
|
})
|
||||||
}, {
|
}, {
|
||||||
id: "td",
|
id: "td",
|
||||||
canImport: data => data.meta.cloudId == "microbit.co.uk" && data.meta.editor == "touchdevelop",
|
canImport: data => data.meta.cloudId == "microbit.co.uk" && data.meta.editor == "touchdevelop",
|
||||||
importAsync: (project, data) =>
|
importAsync: (project, data) =>
|
||||||
project.createProjectAsync({
|
project.createProjectAsync({
|
||||||
filesOverride: { "main.blocks": "", "main.ts": " " },
|
filesOverride: { "main.blocks": "", "main.ts": " " },
|
||||||
name: data.meta.name
|
name: data.meta.name
|
||||||
})
|
})
|
||||||
.then(() => project.convertTouchDevelopToTypeScriptAsync(data.source))
|
.then(() => project.convertTouchDevelopToTypeScriptAsync(data.source))
|
||||||
.then(text => project.overrideTypescriptFile(text))
|
.then(text => project.overrideTypescriptFile(text))
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
pxt.commands.deployCoreAsync = deployCoreAsync;
|
pxt.commands.deployCoreAsync = deployCoreAsync;
|
||||||
return Promise.resolve<pxt.editor.ExtensionResult>(res);
|
return Promise.resolve<pxt.editor.ExtensionResult>(res);
|
||||||
|
@ -70,6 +70,14 @@
|
|||||||
"device_print_message.message": "text"
|
"device_print_message.message": "text"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"hidSelectors": [
|
||||||
|
{
|
||||||
|
"usagePage": "0xFF00",
|
||||||
|
"usageId": "0x0001",
|
||||||
|
"vid": "0x0d28",
|
||||||
|
"pid": "0x0204"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
|
295
pxtwapp/.gitignore
vendored
Normal file
@ -0,0 +1,295 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
|
||||||
|
# Visual Studio 2015 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
**/Properties/launchSettings.json
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/packages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/packages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/packages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Typescript v1 declaration files
|
||||||
|
typings/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
.idea/
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# CodeRush
|
||||||
|
.cr/
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
48
pxtwapp/pxtwapp.sln
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26430.15
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{262852C6-CD72-467D-83FE-5EEB1973A190}") = "pxtwapp", "pxtwapp\pxtwapp.jsproj", "{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|ARM = Debug|ARM
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|ARM = Release|ARM
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|ARM.ActiveCfg = Debug|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|ARM.Build.0 = Debug|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|ARM.Deploy.0 = Debug|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x64.Deploy.0 = Debug|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Debug|x86.Deploy.0 = Debug|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|ARM.ActiveCfg = Release|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|ARM.Build.0 = Release|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|ARM.Deploy.0 = Release|ARM
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x64.Build.0 = Release|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x64.Deploy.0 = Release|x64
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x86.Build.0 = Release|x86
|
||||||
|
{34E8CDE2-3991-414E-BB19-BFF4BD5E031A}.Release|x86.Deploy.0 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
BIN
pxtwapp/pxtwapp/images/SmallTile.scale-200.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
pxtwapp/pxtwapp/images/SplashScreen.scale-200.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
pxtwapp/pxtwapp/images/Square150x150Logo.scale-200.png
Normal file
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 3.4 KiB |
BIN
pxtwapp/pxtwapp/images/Square44x44Logo.scale-200.png
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
pxtwapp/pxtwapp/images/Square44x44Logo.targetsize-48.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
pxtwapp/pxtwapp/images/Wide310x150Logo.scale-200.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
pxtwapp/pxtwapp/images/logo.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
pxtwapp/pxtwapp/images/storelogo.scale-200.png
Normal file
After Width: | Height: | Size: 10 KiB |
40
pxtwapp/pxtwapp/msapp-error.css
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
body {
|
||||||
|
margin: 10px;
|
||||||
|
background-color: #4C4B4D;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: 'Open Sans', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paramName {
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.paramValue {
|
||||||
|
font-size: 10px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.param {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#retryButton {
|
||||||
|
box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset;
|
||||||
|
outline: none;
|
||||||
|
border: none;
|
||||||
|
vertical-align: baseline;
|
||||||
|
padding: 0.78571429em 1.5em 0.78571429em;
|
||||||
|
text-transform: none;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: normal;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
border-radius: 0.28571429rem;
|
||||||
|
background-color: #FB48C7;
|
||||||
|
margin: 15px 10px 100px 10px;
|
||||||
|
width: 80px;
|
||||||
|
height: 35px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
24
pxtwapp/pxtwapp/msapp-error.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Oops!</title>
|
||||||
|
<link href="msapp-error.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script src="msapp-error.js" type="text/javascript"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Oops! Please connect to the Internet.</h1>
|
||||||
|
<button id="retryButton">Retry</button>
|
||||||
|
<div id="failureUrl" class="param">
|
||||||
|
<span class="paramName">URL:</span>
|
||||||
|
<span id="failureUrlValue" class="paramValue"></span>
|
||||||
|
</div>
|
||||||
|
<div id="httpStatus" class="param">
|
||||||
|
<span class="paramName">HTTP status:</span>
|
||||||
|
<span id="httpStatusValue" class="paramValue"></span>
|
||||||
|
</div>
|
||||||
|
<div id="failureName">
|
||||||
|
<span class="paramName">Failure name:</span>
|
||||||
|
<span id="failureNameValue" class="paramValue"></span>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
47
pxtwapp/pxtwapp/msapp-error.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
(function () {
|
||||||
|
var validParameterNames = ["httpStatus", "failureName", "failureUrl"];
|
||||||
|
|
||||||
|
function parseQueryParameters() {
|
||||||
|
var query = location.search.slice(1);
|
||||||
|
return query.split("&").reduce(function (queryParameters, rawPair) {
|
||||||
|
var pair = rawPair.split("=").map(decodeURIComponent);
|
||||||
|
queryParameters[pair[0]] = pair[1];
|
||||||
|
return queryParameters;
|
||||||
|
}, {});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initialize() {
|
||||||
|
var queryParameters = parseQueryParameters();
|
||||||
|
var url = queryParameters["failureUrl"];
|
||||||
|
var retryButton = document.getElementById("retryButton");
|
||||||
|
|
||||||
|
if (url) {
|
||||||
|
retryButton.addEventListener("click", (e) => {
|
||||||
|
window.location.href = url;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
retryButton.style.display = none;
|
||||||
|
}
|
||||||
|
|
||||||
|
validParameterNames.forEach(function (parameterName) {
|
||||||
|
var parameterValue = queryParameters[parameterName];
|
||||||
|
|
||||||
|
if (parameterValue) {
|
||||||
|
document.getElementById(parameterName + "Value").textContent = parameterValue;
|
||||||
|
} else {
|
||||||
|
document.getElementById(parameterName).remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateOnlineStatus(e) {
|
||||||
|
var queryParameters = parseQueryParameters();
|
||||||
|
var url = queryParameters["failureUrl"];
|
||||||
|
if (url) {
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener("online", updateOnlineStatus);
|
||||||
|
document.addEventListener("DOMContentLoaded", initialize);
|
||||||
|
}());
|
60
pxtwapp/pxtwapp/package.appxmanifest
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" IgnorableNamespaces="uap uap3 mp">
|
||||||
|
<Identity Name="microsoft.makecode.microbit" Version="1.0.1.0" Publisher="CN=microbit" />
|
||||||
|
<mp:PhoneIdentity PhoneProductId="34e8cde2-3991-414e-bb19-bff4bd5e031a" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
|
||||||
|
<Properties>
|
||||||
|
<DisplayName>Microsoft MakeCode for micro:bit</DisplayName>
|
||||||
|
<PublisherDisplayName>micro:bit</PublisherDisplayName>
|
||||||
|
<Logo>images\storelogo.png</Logo>
|
||||||
|
</Properties>
|
||||||
|
<Dependencies>
|
||||||
|
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
|
||||||
|
</Dependencies>
|
||||||
|
<Resources>
|
||||||
|
<Resource Language="x-generate" />
|
||||||
|
</Resources>
|
||||||
|
<Applications>
|
||||||
|
<Application Id="App" StartPage="http://localhost:3232/index.html#nolocalhost=1">
|
||||||
|
<uap:ApplicationContentUriRules>
|
||||||
|
<uap:Rule Match="http://localhost:3232/*" Type="include" WindowsRuntimeAccess="all" />
|
||||||
|
<uap:Rule Match="https://makecode.microbit.org/" Type="include" WindowsRuntimeAccess="all" />
|
||||||
|
<uap:Rule Match="https://trg-microbit.userpxt.io/---simulator" Type="include" WindowsRuntimeAccess="none" />
|
||||||
|
<uap:Rule Match="https://makecode.microbit.com/beta" Type="include" WindowsRuntimeAccess="all" />
|
||||||
|
<uap:Rule Match="https://trg-microbit.userpxt.io/beta---simulator" Type="include" WindowsRuntimeAccess="none" />
|
||||||
|
</uap:ApplicationContentUriRules>
|
||||||
|
<uap:VisualElements DisplayName="Microsoft MakeCode for micro:bit" Description="Microsoft MakeCode for micro:bit" BackgroundColor="#BA0018" Square150x150Logo="images\Square150x150Logo.png" Square44x44Logo="images\Square44x44Logo.png">
|
||||||
|
<uap:DefaultTile Wide310x150Logo="images\Wide310x150Logo.png" Square71x71Logo="images\SmallTile.png">
|
||||||
|
</uap:DefaultTile>
|
||||||
|
<uap:SplashScreen Image="images\SplashScreen.png" BackgroundColor="#BA0018" />
|
||||||
|
</uap:VisualElements>
|
||||||
|
<Extensions>
|
||||||
|
<uap:Extension Category="windows.fileTypeAssociation">
|
||||||
|
<uap:FileTypeAssociation Name="makecode">
|
||||||
|
<uap:DisplayName>Microsoft MakeCode binary file</uap:DisplayName>
|
||||||
|
<uap:SupportedFileTypes>
|
||||||
|
<uap:FileType ContentType="application/x-makecode-hex">.hex</uap:FileType>
|
||||||
|
</uap:SupportedFileTypes>
|
||||||
|
</uap:FileTypeAssociation>
|
||||||
|
</uap:Extension>
|
||||||
|
<uap3:Extension Category="windows.appUriHandler">
|
||||||
|
<uap3:AppUriHandler>
|
||||||
|
<uap3:Host Name="makecode.microbit.org" />
|
||||||
|
</uap3:AppUriHandler>
|
||||||
|
</uap3:Extension>
|
||||||
|
</Extensions>
|
||||||
|
</Application>
|
||||||
|
</Applications>
|
||||||
|
<Capabilities>
|
||||||
|
<Capability Name="internetClient" />
|
||||||
|
<DeviceCapability Name="serialcommunication">
|
||||||
|
<Device Id="any">
|
||||||
|
<Function Type="name:serialPort" />
|
||||||
|
</Device>
|
||||||
|
</DeviceCapability>
|
||||||
|
<DeviceCapability Name="humaninterfacedevice">
|
||||||
|
<Device Id="vidpid:0d28 0204">
|
||||||
|
<Function Type="usage:FF00 *" />
|
||||||
|
</Device>
|
||||||
|
</DeviceCapability>
|
||||||
|
</Capabilities>
|
||||||
|
</Package>
|
87
pxtwapp/pxtwapp/pxtwapp.jsproj
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|AnyCPU">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>AnyCPU</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x86">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|AnyCPU">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>AnyCPU</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM</Platform>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x86">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>34e8cde2-3991-414e-bb19-bff4bd5e031a</ProjectGuid>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0'">
|
||||||
|
<VisualStudioVersion>14.0</VisualStudioVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).Default.props" />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).props" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
|
||||||
|
<TargetPlatformVersion>10.0.15063.0</TargetPlatformVersion>
|
||||||
|
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>
|
||||||
|
<MinimumVisualStudioVersion>$(VersionNumberMajor).$(VersionNumberMinor)</MinimumVisualStudioVersion>
|
||||||
|
<DefaultLanguage>en-US</DefaultLanguage>
|
||||||
|
<PackageCertificateKeyFile>pxtwapp_TemporaryKey.pfx</PackageCertificateKeyFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<AppxManifest Include="package.appxmanifest">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</AppxManifest>
|
||||||
|
<Content Include="images\logo.png" />
|
||||||
|
<Content Include="images\SmallTile.scale-200.png" />
|
||||||
|
<Content Include="images\Square44x44Logo.altform-unplated_targetsize-48.png" />
|
||||||
|
<Content Include="images\Square44x44Logo.targetsize-48.png" />
|
||||||
|
<Content Include="images\storelogo.scale-200.png" />
|
||||||
|
<Content Include="msapp-error.js" />
|
||||||
|
<Content Include="msapp-error.css" />
|
||||||
|
<Content Include="msapp-error.html" />
|
||||||
|
<Content Include="images\SplashScreen.scale-200.png" />
|
||||||
|
<Content Include="images\Square150x150Logo.scale-200.png" />
|
||||||
|
<Content Include="images\Square44x44Logo.scale-200.png" />
|
||||||
|
<Content Include="images\Wide310x150Logo.scale-200.png" />
|
||||||
|
<None Include="pxtwapp_TemporaryKey.pfx" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\$(WMSJSProjectDirectory)\Microsoft.VisualStudio.$(WMSJSProject).targets" />
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below then uncomment
|
||||||
|
that target and the DisableFastUpToDateCheck PropertyGroup.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
<PropertyGroup>
|
||||||
|
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck>
|
||||||
|
</PropertyGroup>
|
||||||
|
-->
|
||||||
|
</Project>
|