Jump to content

Cocoa (iOS/OSX) Layer for TinkerForge - in here!


cfranz

Recommended Posts

[english summary: this post contains the first partly-complete cocoa layer for TF bricks/bricklets. Not all bricklets are currently supported. Please read the enclosed documentation and feedback here]

 

Dieser Post ist nur interessant für iOS/OSX Tinkerer!

 

Da ich in meinem 'echten Leben' für iOS und OSX programmiere, habe ich mir einen Cocoa Layer für meine TF bricklets gechrieben, den ich gerne jedem interessierten zugänglich mache.

 

Der Cocoa-Layer sitzt auf den normalen C/C++ Bindings (die musst du also auch herunterladen) und macht das Arbeiten mit den TF bricklets *sehr* viel einfacher. Der Cocoa Layer ist sehr viel mehr als bloss ein Wrapper - er ist hierarchisch, baut auf NSObject auf und enthält eine Reihe von (für mich) wichtigen Vereinfachungen:

 

- Alle TF bricks sind nun NSObject descendants

- Relays und IO-Bricks können in IOArrays oder RelayArrays zu grossen virtuellen superbricklets zusammengefasst werden

- Die LCD-Klasse kann mit writeLn und NSStrings arbeiten 

- Die TinkerIO (IPconnection) Klasse ist auf Plug&Play via delegates vorbereitet (noch nicht umgesetzt)

 

Die beiden Attachments sind

- der Cocoa Layer (source und extensive dokumentation in Englisch)

- ein demo-programm, welches mit einem LCD und Distance IR arbeitet

 

Momentan sind nur die bricklets umgesetzt, die ich selber besitze: Dual Relay, IO4, LCD 20x4, Ambient Light, Distance IR, Dreh-poti

 

Feedback, Erfahrungen, Anregungen, Kommentare bitte in diesem Thread, bis die freundlichen TinkerForger eine Ecke für handgestrickte Bindings/Layer bereitstellen.

 

 

Viel Spass,

-ch

Tinkerforge_Cocoa_Layer.zip

starter_demo_dist_and_lcd.zip

Link to comment
Share on other sites

(English summary: another short example app, this one shows how I subclassed TDLCD20x4 to create an LCD display that shows a short message with animated 'snow flakes' - using asterisks '*'. Zip also contains Cocoa Layer )

 

Ein weiteres Cocoa Layer Beispiel, in dem ich das TDLCD20x4 erweitert habe zu einem Display, welches eine Nachricht in einem 'Schneesturm' aus Sternchen '*' zeigt. Das 'wirkliche' Programm sind nur ~20 Zeilen, der Rest der 108KB ist eine neue Version des Layers: erweitert um eine winzige Funktion für die TDLCD Klasse.

 

 

Gruss

-ch

snowy.zip

Link to comment
Share on other sites

  • 5 weeks later...

(english summary: new version of cocoa layer that contains minor bug fixes, plus new objects for the folowing: Master Brick (incl. all extensions), Temperatrue Bricklet, Barometric Pressure Bricklet)

 

Frohes neues Jahr!

 

Weihnachten ist vorbei und der Weihnachtsmann hat mir ein paar neue bricklets mitgebracht. In der neuen Version des CocoaLayers sind die folgenden objects neu enthalten:

- Master (mit allen extension)

- Temperature

- Barometric Pressure

 

Viel Spass,

-ch

Tinkerforge_Cocoa_Layer.zip

Link to comment
Share on other sites

Zur Zeit sind die callbacks noch nicht mit Cocoa verwendbar - eine Objective-C Method kann bekanntlich nicht als callback für eine C/C++-Prozedur übergeben werden (Limitation der Sprache/LLVM).

Sobald die TF 2.0 Bindings definiert sind (sind je bereits im test, wenn ich das richtig gesehen habe), haben die Callbacks einen (void *) pointer, mit dem wir das Objekt übergeben können, welches als delegate die callbacks umsetzt. Sofern dein Objekt dann das (noch zu definierende) Cocoa-Layer (Objective-C) TinkerForge-Protokoll unterstützt, geht das auch mit den Delegates. Habe mir noch nicht allzuviel gedanken darüber gemacht, aber nie Änderungen am Cocoa-Layer sollten sich in Grenzen halten.

 

Als resultat haben wir dann hoffentlich einen layer, der der eleganz der TF-bausteine gerecht wird. C hat das ja nicht :)

 

Gruss,

-ch

 

Link to comment
Share on other sites

  • 1 month later...

OK, ein kurzer update: Über der Wochenende habe ich den Layer auf das neue TF-Protokoll emigriert - und er funktioniert schon!

 

Aber das beste: mit dem neuen TF-Protokoll kann der Layer nun auch callbacks unterstützen (was ja bekanntlich mit objektive-C messages nicht geht). Callbacks gehen im Cocoa-Layer via delegate objects und dem niegelnagelneuem TDevice-Protokoll.

 

Muss jetzt noch die Doku updaten und ein paar neue objekte einbinden - dann sollte der neue Layer für eine erste Testrunde bereit stehen.

 

Bastian - ich werde dann auf Dich zukommen, damit wir die neue version gleich in die Ecke stellen können, die Du dafür bereit gemacht hast.

 

-ch

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...