You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.8 KiB
112 lines
3.8 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Collections; |
|
using System.Text; |
|
using System.IO.Ports; |
|
using System.IO; |
|
|
|
namespace ArdupilotMega.Arduino |
|
{ |
|
public delegate void ProgressEventHandler(int progress, string status); |
|
|
|
/// <summary> |
|
/// Arduino STK interface |
|
/// </summary> |
|
public interface ArduinoComms |
|
{ |
|
bool connectAP(); |
|
bool keepalive(); |
|
bool sync(); |
|
byte[] download(short length); |
|
byte[] downloadflash(short length); |
|
bool setaddress(int address); |
|
bool upload(byte[] data, short startfrom, short length, short startaddress); |
|
bool uploadflash(byte[] data, int startfrom, int length, int startaddress); |
|
|
|
Chip getChipType(); |
|
|
|
event ProgressEventHandler Progress; |
|
|
|
// from serialport class |
|
int BaudRate { get; set; } |
|
bool DtrEnable { get; set; } |
|
string PortName { get; set; } |
|
StopBits StopBits { get; set; } |
|
Parity Parity { get; set; } |
|
bool IsOpen { get; } |
|
void Open(); |
|
void Close(); |
|
int DataBits { get; set; } |
|
} |
|
|
|
public class Chip |
|
{ |
|
public string name = ""; |
|
public byte sig1 = 0; |
|
public byte sig2 = 0; |
|
public byte sig3 = 0; |
|
public uint size = 0; |
|
|
|
static bool creating = true; |
|
|
|
public static List<Chip> chips = new List<Chip>(); |
|
|
|
public static void Populate() |
|
{ |
|
creating = false; |
|
|
|
chips.Clear(); |
|
|
|
chips.Add(new Chip("ATmega2561", 0x1e, 0x98, 0x02, 0x100U)); //128 words |
|
chips.Add(new Chip("ATmega2560", 0x1e, 0x98, 0x01, 0x100U)); //128 words |
|
chips.Add(new Chip("ATmega1280", 0x1e, 0x97, 0x03, 0x80U)); //128 words |
|
chips.Add(new Chip("ATmega1281", 0x1e, 0x97, 0x04, 0x80U)); //128 words |
|
chips.Add(new Chip("ATmega128", 0x1e, 0x97, 0x02, 0x80U)); //128 words |
|
chips.Add(new Chip("ATmega64", 0x1e, 0x96, 0x02, 0x80U)); //128 words |
|
chips.Add(new Chip("ATmega32", 0x1e, 0x95, 0x02, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega16", 0x1e, 0x94, 0x03, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega8", 0x1e, 0x93, 0x07, 0x20U)); //32 words |
|
chips.Add(new Chip("ATmega88", 0x1e, 0x93, 0x0a, 0x20U)); //32 words |
|
chips.Add(new Chip("ATmega168", 0x1e, 0x94, 0x06, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega328P", 0x1e, 0x95, 0x0F, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega162", 0x1e, 0x94, 0x04, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega163", 0x1e, 0x94, 0x02, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega169", 0x1e, 0x94, 0x05, 0x40U)); //64 words |
|
chips.Add(new Chip("ATmega8515", 0x1e, 0x93, 0x06, 0x20U)); //32 words |
|
chips.Add(new Chip("ATmega8535", 0x1e, 0x93, 0x08, 0x20U));//32 words |
|
|
|
foreach (Chip item in chips) |
|
{ |
|
// Console.WriteLine(item); |
|
} |
|
} |
|
|
|
public Chip(string nm, byte s1, byte s2, byte s3, uint size) |
|
{ |
|
if (chips.Count == 0 && creating) |
|
Populate(); |
|
|
|
name = nm; |
|
sig1 = s1; |
|
sig2 = s2; |
|
sig3 = s3; |
|
this.size = size; |
|
} |
|
|
|
public override string ToString() |
|
{ |
|
return "Chip(" + name + ", " + sig1.ToString("X") + ", " + sig2.ToString("X") + ", " + sig3.ToString("X") + ", " + size + ")"; |
|
} |
|
|
|
public override bool Equals(object obj) |
|
{ |
|
Chip item = obj as Chip; |
|
return (item.sig1 == this.sig1 && item.sig2 == this.sig2 && item.sig3 == this.sig3); |
|
} |
|
|
|
public override int GetHashCode() |
|
{ |
|
return base.GetHashCode(); |
|
} |
|
} |
|
}
|
|
|