mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-20 14:54:31 +01:00
Remove getBoardWithMatchingVidPidFromCloud and make a new class BoardCloudResolver
This commit is contained in:
parent
824567d763
commit
bcb8e90534
@ -23,11 +23,6 @@
|
|||||||
package processing.app;
|
package processing.app;
|
||||||
|
|
||||||
import cc.arduino.packages.BoardPort;
|
import cc.arduino.packages.BoardPort;
|
||||||
import cc.arduino.utils.network.HttpConnectionManager;
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
|
||||||
import org.apache.logging.log4j.Logger;
|
|
||||||
import processing.app.debug.TargetBoard;
|
import processing.app.debug.TargetBoard;
|
||||||
import processing.app.debug.TargetPackage;
|
import processing.app.debug.TargetPackage;
|
||||||
import processing.app.debug.TargetPlatform;
|
import processing.app.debug.TargetPlatform;
|
||||||
@ -36,9 +31,6 @@ import processing.app.legacy.PConstants;
|
|||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static processing.app.I18n.tr;
|
import static processing.app.I18n.tr;
|
||||||
@ -60,8 +52,7 @@ import static processing.app.I18n.tr;
|
|||||||
* know if name is proper Java package syntax.)
|
* know if name is proper Java package syntax.)
|
||||||
*/
|
*/
|
||||||
public class Platform {
|
public class Platform {
|
||||||
private static Logger log = LogManager.getLogger(Platform.class);
|
// DO NOT USE log4j here otherwise the root path of the logs will no be initialize correctly
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the default L & F. While I enjoy the bounty of the sixteen possible
|
* Set the default L & F. While I enjoy the bounty of the sixteen possible
|
||||||
* exception types that this UIManager method might throw, I feel that in
|
* exception types that this UIManager method might throw, I feel that in
|
||||||
@ -185,36 +176,6 @@ public class Platform {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void getBoardWithMatchingVidPidFromCloud(String vid, String pid) {
|
|
||||||
// this method is less useful in Windows < WIN10 since you need drivers to be already installed
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
|
||||||
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
|
||||||
try {
|
|
||||||
URL jsonUrl = new URL(String.format("https://builder.arduino.cc/builder/v1/boards/0x%s/0x%s", vid, pid));
|
|
||||||
|
|
||||||
final HttpURLConnection httpConnection = new HttpConnectionManager(jsonUrl)
|
|
||||||
.makeConnection();
|
|
||||||
int code = httpConnection.getResponseCode();
|
|
||||||
if (code == 404) {
|
|
||||||
log.warn("Fail to get the Vid Pid information from the builder response code={}", code);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
InputStream is = httpConnection.getInputStream();
|
|
||||||
BoardCloudAPIid board = mapper.readValue(is, BoardCloudAPIid.class);
|
|
||||||
log.info("Board info from the cloud {}", board);
|
|
||||||
// Launch a popup with a link to boardmanager#board.getName()
|
|
||||||
// replace spaces with &
|
|
||||||
String realBoardName = board.getName().replaceAll("\\(.*?\\)", "").trim();
|
|
||||||
String boardNameReplaced = realBoardName.replaceAll(" ", "&");
|
|
||||||
String message = I18n.format(tr("{0}Install this package{1} to use your {2} board"), "<a href=\"http://boardsmanager/all#" + boardNameReplaced + "\">", "</a>", realBoardName);
|
|
||||||
BaseNoGui.setBoardManagerLink(message);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// No connection no problem, fail silently
|
|
||||||
//e.printStackTrace();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized Map<String, Object> resolveDeviceByVendorIdProductId(String serial, Map<String, TargetPackage> packages) {
|
public synchronized Map<String, Object> resolveDeviceByVendorIdProductId(String serial, Map<String, TargetPackage> packages) {
|
||||||
String vid_pid_iSerial = resolveDeviceAttachedToNative(serial);
|
String vid_pid_iSerial = resolveDeviceAttachedToNative(serial);
|
||||||
for (TargetPackage targetPackage : packages.values()) {
|
for (TargetPackage targetPackage : packages.values()) {
|
||||||
@ -256,56 +217,6 @@ public class Platform {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class BoardCloudAPIid {
|
|
||||||
|
|
||||||
private String fqbn;
|
|
||||||
private String name;
|
|
||||||
private String architecture;
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFqbn() {
|
|
||||||
return fqbn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getArchitecture() {
|
|
||||||
return architecture;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String tmp) {
|
|
||||||
name = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFqbn(String fqbn) {
|
|
||||||
this.fqbn = fqbn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setArchitecture(String tmp) {
|
|
||||||
architecture = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String tmp) {
|
|
||||||
id = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "BoardCloudAPIid{" +
|
|
||||||
"name='" + name + '\'' +
|
|
||||||
", fqbn='" + fqbn + '\'' +
|
|
||||||
", architecture='" + architecture + '\'' +
|
|
||||||
", id='" + id + '\'' +
|
|
||||||
'}';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String resolveDeviceByBoardID(Map<String, TargetPackage> packages, String boardId) {
|
public String resolveDeviceByBoardID(Map<String, TargetPackage> packages, String boardId) {
|
||||||
assert packages != null;
|
assert packages != null;
|
||||||
assert boardId != null;
|
assert boardId != null;
|
||||||
|
151
arduino-core/src/processing/app/helpers/BoardCloudResolver.java
Normal file
151
arduino-core/src/processing/app/helpers/BoardCloudResolver.java
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* * This file is part of Arduino.
|
||||||
|
* *
|
||||||
|
* * Copyright 2015 Arduino LLC (http://www.arduino.cc/)
|
||||||
|
* *
|
||||||
|
* * Arduino is free software; you can redistribute it and/or modify
|
||||||
|
* * it under the terms of the GNU General Public License as published by
|
||||||
|
* * the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* * (at your option) any later version.
|
||||||
|
* *
|
||||||
|
* * This program is distributed in the hope that it will be useful,
|
||||||
|
* * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* * GNU General Public License for more details.
|
||||||
|
* *
|
||||||
|
* * You should have received a copy of the GNU General Public License
|
||||||
|
* * along with this program; if not, write to the Free Software
|
||||||
|
* * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
* *
|
||||||
|
* * As a special exception, you may use this file as part of a free software
|
||||||
|
* * library without restriction. Specifically, if other files instantiate
|
||||||
|
* * templates or use macros or inline functions from this file, or you compile
|
||||||
|
* * this file and link it with other files to produce an executable, this
|
||||||
|
* * file does not by itself cause the resulting executable to be covered by
|
||||||
|
* * the GNU General Public License. This exception does not however
|
||||||
|
* * invalidate any other reasons why the executable file might be covered by
|
||||||
|
* * the GNU General Public License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package processing.app.helpers;
|
||||||
|
|
||||||
|
import cc.arduino.utils.network.HttpConnectionManager;
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
import processing.app.BaseNoGui;
|
||||||
|
import processing.app.I18n;
|
||||||
|
import processing.app.debug.TargetBoard;
|
||||||
|
import processing.app.debug.TargetPackage;
|
||||||
|
import processing.app.debug.TargetPlatform;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static processing.app.I18n.tr;
|
||||||
|
|
||||||
|
public class BoardCloudResolver {
|
||||||
|
private static Logger log = LogManager.getLogger(BoardCloudResolver.class);
|
||||||
|
|
||||||
|
public synchronized void getBoardBy(String vid, String pid) {
|
||||||
|
// this method is less useful in Windows < WIN10 since you need drivers to be already installed
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||||
|
try {
|
||||||
|
URL jsonUrl = new URL(String.format("https://builder.arduino.cc/builder/v1/boards/0x%s/0x%s", vid, pid));
|
||||||
|
|
||||||
|
final HttpURLConnection httpConnection = new HttpConnectionManager(jsonUrl)
|
||||||
|
.makeConnection();
|
||||||
|
int code = httpConnection.getResponseCode();
|
||||||
|
if (code == 404) {
|
||||||
|
log.warn("Fail to get the Vid Pid information from the builder response code={}", code);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
InputStream is = httpConnection.getInputStream();
|
||||||
|
BoardCloudAPIid board = mapper.readValue(is, BoardCloudAPIid.class);
|
||||||
|
log.info("Board info from the cloud {}", board);
|
||||||
|
// Launch a popup with a link to boardmanager#board.getName()
|
||||||
|
// replace spaces with &
|
||||||
|
String realBoardName = board.getName().replaceAll("\\(.*?\\)", "").trim();
|
||||||
|
String boardNameReplaced = realBoardName.replaceAll(" ", "&");
|
||||||
|
String message = I18n.format(tr("{0}Install this package{1} to use your {2} board"), "<a href=\"http://boardsmanager/all#" + boardNameReplaced + "\">", "</a>", realBoardName);
|
||||||
|
BaseNoGui.setBoardManagerLink(message);
|
||||||
|
} catch (Exception e) {
|
||||||
|
// No connection no problem, fail silently
|
||||||
|
//e.printStackTrace();
|
||||||
|
log.warn("Error during get board information by vid, pid", e);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String resolveDeviceByBoardID(Map<String, TargetPackage> packages, String boardId) {
|
||||||
|
assert packages != null;
|
||||||
|
assert boardId != null;
|
||||||
|
for (TargetPackage targetPackage : packages.values()) {
|
||||||
|
for (TargetPlatform targetPlatform : targetPackage.getPlatforms().values()) {
|
||||||
|
for (TargetBoard board : targetPlatform.getBoards().values()) {
|
||||||
|
if (boardId.equals(board.getId())) {
|
||||||
|
return board.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class BoardCloudAPIid {
|
||||||
|
|
||||||
|
private String fqbn;
|
||||||
|
private String name;
|
||||||
|
private String architecture;
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String tmp) {
|
||||||
|
name = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFqbn() {
|
||||||
|
return fqbn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFqbn(String fqbn) {
|
||||||
|
this.fqbn = fqbn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArchitecture() {
|
||||||
|
return architecture;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArchitecture(String tmp) {
|
||||||
|
architecture = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String tmp) {
|
||||||
|
id = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "BoardCloudAPIid{" +
|
||||||
|
"name='" + name + '\'' +
|
||||||
|
", fqbn='" + fqbn + '\'' +
|
||||||
|
", architecture='" + architecture + '\'' +
|
||||||
|
", id='" + id + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user