update pikaStdDevice to prot from package

This commit is contained in:
lyon1998 2022-04-07 09:06:38 +08:00
parent 9b15b16082
commit d4ead82c98
4 changed files with 77 additions and 6 deletions

View File

@ -11,6 +11,12 @@ class GPIO(TinyObj):
def setPin(pinName: str):
pass
def setId(id: int):
pass
def getId() -> int:
pass
def getPin() -> str:
pass
@ -86,6 +92,9 @@ class ADC(TinyObj):
def enable():
pass
def disable():
pass
def read() -> float:
pass
@ -97,6 +106,10 @@ class ADC(TinyObj):
def platformRead():
pass
# need override
def platformDisable():
pass
class UART(TinyObj):
def __init__():
@ -114,6 +127,9 @@ class UART(TinyObj):
def enable():
pass
def disable():
pass
def write(data: str):
pass
@ -132,6 +148,9 @@ class UART(TinyObj):
def platformRead():
pass
# need override
def platformDisable():
pass
class IIC(TinyObj):
def __init__():
@ -152,6 +171,9 @@ class IIC(TinyObj):
def enable():
pass
def disable():
pass
def write(addr: int, data: str):
pass
@ -170,6 +192,9 @@ class IIC(TinyObj):
def platformRead():
pass
# need override
def platformDisable():
pass
class PWM(TinyObj):
def __init__():
@ -178,18 +203,36 @@ class PWM(TinyObj):
def init():
pass
def setName(name: str):
pass
def getName() -> str:
pass
def setChannel(ch: int):
pass
def getChannel() -> int:
pass
def setPin(pin: str):
pass
def setFrequency(freq: int):
pass
def setFreq(freq: int):
pass
def setDuty(duty: float):
pass
def enable():
pass
def disable():
pass
def getFrequency() -> int:
pass
@ -207,3 +250,7 @@ class PWM(TinyObj):
# need override
def platformSetDuty():
pass
# need override
def platformDisable():
pass

View File

@ -1,6 +1,6 @@
class PyObj(BaseObj):
def importClass(className: str, fp: str):
def importClass(self, className: str, fp: str):
pass
def newObj(objName: str, className: str, fp: str):

View File

@ -11,25 +11,47 @@ impl ArgList {
pub fn to_string(&self) -> String {
return self.py_arg_list.clone();
}
pub fn new(py_arg_list: &Option<String>) -> Option<ArgList> {
let py_arg_list = match py_arg_list {
Some(x) => x,
None => return None,
};
/* remove space */
let py_arg_list = py_arg_list.replace(" ", "");
/* remove no type arg */
let py_arg_list_vecotr: Vec<&str> = py_arg_list.split(",").collect();
let mut py_arg_list = String::from("");
for arg_define in py_arg_list_vecotr.iter() {
let arg_define = String::from(*arg_define);
if arg_define.contains(":"){
py_arg_list.push_str(&arg_define);
py_arg_list.push_str(",");
}
}
/* remove the last ',' */
py_arg_list.remove(py_arg_list.len() - 1);
/* push py_arg_list */
let mut arg_list = ArgList {
py_arg_list: py_arg_list.clone(),
list: BTreeMap::new(),
};
let py_arg_list = py_arg_list.replace(" ", "");
let py_arg_list: Vec<&str> = py_arg_list.split(",").collect();
for arg_define in py_arg_list.iter() {
/* splite each arg */
let py_arg_list_vecotr: Vec<&str> = py_arg_list.split(",").collect();
for arg_define in py_arg_list_vecotr.iter() {
/* get arg name */
let arg_name = match my_string::get_first_token(&arg_define.to_string(), ':') {
Some(name) => name,
None => return None,
/* if not get ':', ignore the arg */
None => String::from(""),
};
/* get type name */
let type_name = match my_string::get_last_token(&arg_define.to_string(), ':') {
Some(name) => name,
None => return None,
/* if not get ':', ignore the arg */
None => String::from(""),
};
arg_list
.list

View File

@ -137,6 +137,7 @@ impl Compiler {
return compiler;
}
/* analize class stmt */
if line.starts_with("class") {
let class_now = match ClassInfo::new(&file_name, &line, false) {
Some(s) => s,
@ -167,6 +168,7 @@ impl Compiler {
return compiler;
}
/* analize def stmt */
if line.starts_with(" def ") {
let line = line.strip_prefix(" ").unwrap().to_string();
let class_now = compiler